+ -
当前位置:首页 → 问答吧 → 《PHP 5权威编程》第三章读后感

《PHP 5权威编程》第三章读后感

时间:2008-01-16

来源:互联网

    技术是随着时间的推移而不断的发展的,随着PHP应用的越来越广范,面向对象的需要变得如此的强烈,虽然php3就增加了面向对象语法,甚至在PHP4中得到增强,但对面向对象的支持还是不完善的,这才有了PHP5的改变。
     
1、书中的讲解深入浅出,没有一个多余的辞藻,完全以编程的风格与要求来表达作者的意图,通读之后对面向对象的理解更加明了。就像面向对象一样本书也以问题的角度来阐述观点,再加上作者对问题理解的深度对一个看似复杂的问题如:对象 Objects,作者的理解为“OOP与面向功能的编程最大的区别就是数据和代码是绑定到一个实体中的,这个实体就叫做对象”,一句话说明了中心也是作者自己的经验的总结,很是言简意赅。同时书中的讲解多与php4进行了对比方便熟悉php4的phper快速应用。

2、看了一些其它作品的源代码之后你可能总结出一些小技巧,当然可能是很费劲的也费时的。而在本书中作者加入了大量的“注意”和“提示”,例如:“注意:接口总是被认为是public的;因此,你不能在定义接口时,给接口的函数原型设置访问修饰符”等,这样以避免大家错误的理解和编码“。

3、由于很多phper都是自学成才,某些方面缺少对高级应用的理解和实践,虽然时下讲解PHP的书不断增多,但实感缺少这样一本完全讲解PHP5高级特色的书。正如书中说到的这本书主要是对PHP5中高级特性的详细讲解,适合于想进行PHP5开发的phper包括:新的面对对象的特性,异常处理、XML和Web服务的改进等还有大量内容请大家参考目录。

“该书是PHP创始人之一、PHP5的缔造者Andi Gutmans根据他在PHP5所加进去的新特性编写的一本PHP5技术大全”,读到这些你会知道一位有着丰富编程经验并且是PHP5的创造者写了这本书,更难能可贵的是他不厌其烦在书中提到了很多技巧及经验(这是我看了第三章后的感受),再加上前PHPChina开源社区负责人,美国Zend公司(PHP的创始公司)中国技术支持中心的简老师的辛勤劳作,相信不会让大家失望。



[ 本帖最后由 jfcat 于 2008-1-16 17:35 编辑 ]

作者: jfcat   发布时间: 2008-01-16

好书是越看越觉得不够看的,真希望下面的章节早点发出来

  一本好书就是一位好的导师,大大减少你时间和金钱的投入,并且提高学习效率和学习兴趣。编程的学习除此之外,还是要大量进行实践与总结才会写出效率更高、质量更好的作品。

作者: jfcat   发布时间: 2008-01-16

讨论越来越踊跃了~

作者: luzhou   发布时间: 2008-01-16

有一本好的书作为引导 学习编程会事半功倍的

作者: 习明   发布时间: 2008-01-16

是啊,只有大家都把自己的想法讲出来并加以讨论,才能更好促进学习的提高

作者: jfcat   发布时间: 2008-01-16

第1章  PHP 5新特性 1
第2章  PHP 5基础语言 13
第3章  PHP 5面向对象语言 55
第4章  PHP 5高级面向对象编程和设计模式 85
第5章  如何用PHP写一个Web应用 111
第6章  使用PHP 5访问数据库 149
第7章  错误处理 191
第8章  PHP 5中处理XML 219
第9章  主流扩展 261
第10章  使用PEAR 345
第11章  重要的PEAR包 383
第12章  创建PEAR的组件 403
第13章  迁移 433
第14章  性能 449
第15章  一个编写PHP扩展的介绍 483
第16章  PHP Shell 脚本编程 507
附录A  PEAR和PECL包索引 527
附录B  phpDocumentor格式参考 613
附录C  Zend Studio快速使用说明 643

这里弄个目录希望大家对书中章节有更多了解
http://www.china-pub.com/computers/common/info.asp?id=37110
下面是CSDN的连载,希望对大家有帮助
http://book.csdn.net/bookfiles/599/

作者: jfcat   发布时间: 2008-01-17

看了书后实践了一下,把现有的一个PHP4类重写了一下。很多内容还不理解,但求高手多指点 ,两个版本代码差别感觉还不大,看来只有到了实际应用中才能看出来了
复制PHP内容到剪贴板
PHP代码:
/**
 * php5版 db.php
 */
class db 
{
 public $conn_id;
 public $sql_num_queries=0;
 
 private $user;
 private $host;
 private $dbname;
 private $persistency;
 private $query_result;
 private $sql;
 
 
 public function __construct($server, $sqluser, $sqlpassword, $database, $port = false, $persistency = false, $new_link = false)
 {
  $this->user = $sqluser;
  $this->host = $sqluser;
  $this->dbname = $database;
  $this->persistency = $persistency;
  
  $this->conn_id = ($this->persistency) ? (mysql_pconnect($this->host, $this->user, $sqlpassword, $new_link)) : (mysql_connect($this->host, $this->user, $sqlpassword, $new_link));
  
  if($this->conn_id && $this->dbname!='')
  {
   @mysql_query("SET NAMES 'utf8'",$this->conn_id);
   @mysql_select_db($this->dbname);
  }
 }
 
 public function __destruct()
 {
  if(is_resource($this->query_result))
  {
   @mysql_free_result($this->query_result);
  }
 }
}

复制PHP内容到剪贴板
PHP代码:
/**
 *  PHP4 db.php
 */
class db
{
 var $user;
 var $host;
 var $dbname;
 var $persistency;
 var $conn_id;
 var $sql_num_queries = 0;
 var $query_result;
 var $sql;
 
 function db_connect($server,$sqluser,$sqlpassword,$database,$port = false,$persistency = false,$new_link = false)
 {
  $this->user = $sqluser;
  $this->host = $server;
  $this->dbname = $database;
  $this->persistency = $persistency;
  
  $this->conn_id = ($this->persistency)?@mysql_pconnect($this->host,$this->user,$sqlpassword,$new_link):@mysql_connect($this->host,$this->user,$sqlpassword,$new_link);
  if($this->conn_id && $this->dbname!='')
  {
   @mysql_query("SET NAMES 'utf8'",$this->conn_id);
   @mysql_select_db($this->dbname);
  }
 }

作者: jfcat   发布时间: 2008-01-17

个人愚见 PHP5析构的时候加个mysql_close可以不?

作者: 习明   发布时间: 2008-01-17

private。与私有成员与保护成员类似,因为它们都只能从对象内部的方法访问。但是,私有成员不能从继承类实例化的对象的方法访问。因为私有属性在继承的类中是看不到的,而且两个相关的类可以分别声明一个名字相同的私有变量。也就是两个类都只能看到自己的私有属性,私有成员之间是没有关系的。

private. Private members are similar to protected members because they


can be accessed only from within an object’s method. However, they are


also inaccessible from a derived object’s methods. Because private properties


aren’t visible from inheriting classes, two related classes may


declare the same private properties. Each class will see its own private


copy, which are unrelated.

个人感觉上面红字这句话有几分歧义或不全面,应为“私有成员应不能从继承类的方法中访问”,而私有成员本不能从实例对象中访问
原文在表达上这个derived object's methods 最好认为是继承类的方法

复制PHP内容到剪贴板
PHP代码:
[font=NewCenturySchlbk-Roman][size=10pt]class A 
{

private $a;
function __construct()
{
  $this->a = 1;
}
}[/size][/font]
[font=NewCenturySchlbk-Roman][size=10pt]class B extends A 
{
function __construct()
{
  echo $this->a;
}

}[/size][/font]
[font=NewCenturySchlbk-Roman][size=10pt]$b = new B();[/size][/font]

这段代码会报错“未声明属性a",因为a在B类中根本看不见

作者: jfcat   发布时间: 2008-01-18

个人感觉关闭操作没有必要
手册上这样写到 ”析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行“,另外还有
“注: 析构函数在脚本关闭时调用,此时所有的头信息已经发出。

  注: 试图在析构函数中抛出一个异常会导致致命错误。 ”
所以我认为使用析构函数还是特别注意,因为可能很多自己生成的对象都已被摧毁;
一个mysql link resource类型被建立后多不用自己关闭,一般当脚本执行完后自己会清理的;另外,在编码过程中只用清理使用中的不用了的查询结果资源,应为这些资源多会缓存在系统中,没用的时候就形成浪费了

作者: jfcat   发布时间: 2008-01-18

热门下载

更多