02 2013 档案
摘要:网上关于SPL spl_autoload_register的用法的例子有很多很多,自己也查看了很多,但感觉介绍得并不太详细,使自己真正能明白其中的原理苦闷了好一会儿。现将自己的理解记录下来。 关于 Standard PHP Library (SPL) 的 autoload 的方法,这些都是 PHP 5.1.2 之后才加上的方法。为了方便,这里做了一些设定。假设你有类文件,放在/home/user/class/foo.class.php, 你当前的文件为/home/user/webroot/test.php, 示例代码如下。在文件test.php中: 1 <?php 2 3 class..
阅读全文
posted @ 2013-02-19 17:01
saws
摘要:串行化大概就是把一些变量转化成为字符串的字节流的形式,这样比较容易传输、存储。当然,关是传输存储没有什么,关键是变成串的形式以后还能够转化回来,而且能够保持原来数据的结构。在PHP中有多串行化处理的函数:serialize(),该函数把任何变量值(除了资源变量)转化为字符串的形式,可以把字符串保存到文件里,或者注册为Session,乃至于使用curl来模拟GET/POST来传输变量,达到RPC的效果。如果要将串行化的变量转化成PHP原始的变量值,那么可以使用unserialize()函数。一、变量串行化我们举简单的例子来说明串行化,以及它的存储格式。整型:以下为引用的内容: $var=23;
阅读全文
posted @ 2013-02-15 11:29
saws
摘要:后期静态绑定从PHP 5.3.0开始,PHP增加一个叫做后期静态绑定的功能,拥有在继承范围内引用静态调用的类。该功能从语言内部角度考虑被命名为“后期静态绑定”。“后期绑定”的意思事说,static::不再被解析为定义当前方法所在的类,而是实际运行时计算的。因为它可以用于(但不限于)静态方法的调用。就是哪个类被最先实例化,static::就执行这个类里面的方法或者属性,不管自身处于被继承的类,还是多代继承。当使用self::或者class 对当前类静态引用,取决于定义当前方法所在的类: 1 <?php 2 class A{ 3 public static function who(){ 4
阅读全文
posted @ 2013-02-12 13:01
saws
摘要:PHP5中的对象比较要比PHP4中复杂,也比其它一般的面向对象语言复杂。当使用对比操作符(==)比较两个对象变量时,比较的原则:如果两个对象的属性和属性值都相等。而且两个对象是一个同一个类的实例,那么这两个对象变量相等。而如果使用全等操作符(===),这两个对象变量一定要指向某一个类的同一个实例(即同一个对象)。$o=new O(); $p=$o $p=&$o 都是全等。 1 <?php 2 function bool2str($bool) 3 { 4 if($bool === false){ 5 return 'FALSE'; 6 }else{ 7 ...
阅读全文
posted @ 2013-02-09 10:03
saws
摘要:PHP的对象实例化和对象赋值($a=new A();$b=$a),是引用赋值,但是又不完全一样,貌似叫个引用操作符复制,反正搞的云里雾里,到现在没具体搞明白。但是这个clone是彻底的拷贝 到新内存中 $b= clone $a;Final关键字父类中的方法被声明为final,则子类无法覆盖该方法;如果一个类被声明为final,则不能被继承。 1 <?php 2 class Faclass{ 3 function bar(){ 4 5 } 6 final function foo(){ 7 8 } 9 ...
阅读全文
posted @ 2013-02-08 18:19
saws
摘要:魔术方法1.__get、__set这两个方法在为类和他们的父类中没有声明的属性设计的。◆__get($property)当调用一个未定义的属性时,此方法会被触发,传递的参数是被访问的属性名。◆__set($property,$value)给一个未定义的属性赋值时,此方法会被触发,传递的参数是被设置的属性名和值。这里的没有声明包括当使用对象调用时,访问控制为protected,private的属性(即没有权限访问的属性)。2.__isset __unset◆__isset($property)当在一个未定义的属性上调用isset()函数时调用此方法。◆__unset($property)当在一个
阅读全文
posted @ 2013-02-07 16:00
saws
摘要:Static关键字声明类成员或者方法为static,就可以不实例化类而直接访问。不能通过一个对象来访问其中的静态成员(静态方法除外)。 1 <?php 2 class Foo{ 3 public static $str=123; 4 static function bar(){ 5 echo "abv"; 6 } 7 } 8 var_dump(Foo::$str); 9 $foo=new Foo();10 var_dump($foo->str);// 输出为空11 //$foo->bar(); 12 ?>抽象类和抽象方法当我有多个类使用同一个方法时.
阅读全文
posted @ 2013-02-04 22:58
saws
摘要:构造函数和析构函数此处要注意一个知识点,就是子类和父类他们的__construct和__destruct之间的关系,子类不会执行父类的__construct和__destruct除非在子类的__construct和__destruct中,通过parent::__construct()或parent::__destruct()调用 1 <?php 2 class Baseclass{ 3 function __construct(){ 4 print "In BaseClass construct\n"; 5 } 6 } 7 class Subclass ...
阅读全文
posted @ 2013-02-03 10:47
saws
摘要:属性众所周知类的属性三个,public,private,protected。属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指PHP脚本在编译阶段时就为常数,而不是在编译阶段之后在运行阶段算出的常数。也就说明下列声明的正确与否 1 <?php 2 class Simpleclass{ 3 //错误的声明 4 public $var1='hello'.'world'; 5 public $var2=<<<EOT 6 hello world 7 EOD; 8 public $var3=1+2; 9 public $var4=se
阅读全文
posted @ 2013-02-02 09:49
saws
摘要:基本概念基本概念需要注意的比较散,一些基本的东西吧。注意以下成员定义无效:总的来说就是i不接受任何表达式的赋值,只能直接是字符串和数组。1 <?php2 class SimpleClass3 public $var1='hello'.'word';4 public $var2=<<<EOT hello world5 EOD;6 public $var3=1+2;7 public $var4=self::mystaticmenthod();8 public $var5=$myvar;9 ?>还有在实力化过程中其实是拷贝。<?ph
阅读全文
posted @ 2013-02-01 16:36
saws

浙公网安备 33010602011771号