码迷,mamicode.com
首页 > Web开发 > 详细

PHP琐碎学习

时间:2016-04-10 11:31:39      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

 

  • 在子类中如果定义了__construct则不会调用父类的__construct,如果需要同时调用父类的构造函数,需要使用parent::__construct()显式的调用。
 1 class Car {
 2    function __construct() {
 3        print "父类构造函数被调用\n";
 4    }
 5 }
 6 class Truck extends Car {
 7    function __construct() {
 8        print "子类构造函数被调用\n";
 9        parent::__construct();
10    }
11 }
12 $car = new Truck();
  •  类的内部 :调用属性自身属性  $this->name   而static   self::$name
  • 如果构造函数定义成了私有方法,则不允许直接实例化对象了,这时候一般通过静态方法进行实例化,在设计模式中会经常使用这样的方法来控制对象的创建,比如单例模式只允许有一个全局唯一的对象。
 1 class Car {
 2     private function __construct() {
 3         echo ‘object create‘;
 4     }
 5 
 6     private static $_object = null;
 7     public static function getInstance() {
 8         if (empty(self::$_object)) {
 9             self::$_object = new Car(); //内部方法可以调用私有方法,因此这里可以创建对象
10         }
11         return self::$_object;
12     }
13 }
14 //$car = new Car(); //这里不允许直接实例化对象
15 $car = Car::getInstance(); //通过静态方法来获得一个实例
  • 重载
    • 属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性。
    • 方法的重载通过__call来实现,当调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic重载。
  • 对象序列化
    • 可以通过serialize方法将对象序列化为字符串,用于存储或者传递数据,然后在需要的时候通过unserialize将字符串反序列化成对象进行使用。
1 class Car {
2     public $name = ‘car‘;
3 }
4 $a = new Car();
5 $str = serialize($a); //对象序列化成字符串
6 echo $str.‘<br>‘;
7 $b = unserialize($str); //反序列化为对象
8 var_dump($b);

 

  • 单引号和双引号到底有啥区别呢?
    •   

      PHP允许我们在双引号串中直接包含字串变量

      而单引号串中的内容总被认为是普通字符。

      比如:

      $str=‘hello‘;
      echo "str is $str"; //运行结果: str is hello
      echo ‘str is $str‘; //运行结果: str is $str

 

   

PHP琐碎学习

标签:

原文地址:http://www.cnblogs.com/vanone/p/5373627.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!