为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
PHP进阶篇_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

PHP进阶篇

Jason PHP开发工程师
难度初级
时长 9小时28分
  • PHP允许我们在双引号串中直接包含字串变量。 而单引号串中的内容总被认为是普通字符。
    查看全部
    0 采集 收起

    2017-04-10

  • 字符串的单引号格式和heredoc格式 $hello = 'hello world'; $hello2 = <<<TAG hello world TAG;
    查看全部
    0 采集 收起

    2018-03-22

  • 代码 对象比较、复制、对象序列化
    查看全部
  • 2.对象复制 <?php class SubObject {     static $instances = 0;     public $instance;     public function __construct() {         $this->instance = ++self::$instances;     }     public function __clone() {         $this->instance = ++self::$instances;     } } class MyCloneable {     public $object1;     public $object2;     function __clone()     {                // 强制复制一份this->object, 否则仍然指向同一个对象         $this->object1 = clone $this->object1;     } } $obj = new MyCloneable(); $obj->object1 = new SubObject();//根据构造函数 instance为1,由于self::$instances++的使用,目前的instances静态属性为1 $obj->object2 = new SubObject();//construct后instance为2 instances为2 $obj2 = clone $obj;//调用__clone()魔术方法,其内部对属性一调用__clone()魔术方法,instance在instances的基础上再加一,为3 属性二还是2 print("Original Object:\n"); print_r($obj); print("Cloned Object:\n"); print_r($obj2); ?> 输出:
    查看全部
  • 1.几个指针的辨析 this是指向对象实例的一个指针,在实例化的时候来确定指向;self是对类本身的一个引用,一般用来指向类中的静态变量;parent是对父类的引用,一般使用parent来调用              private static $firstCount = 0;         private $lastCount;         //构造函数         function __construct()         {              $this->lastCount =++self::$firstCount;      //使用self来调用静态变量        } function printLastCount(){ print($this->lastCount); } parent: <?php  //建立基类Animal  class Animal  {     public $name; public function __construct( $name )     {          $this->name = $name;     }  }  //定义派生类Person 继承自Animal类  class Person extends Animal  {     public$personSex;       public $personAge;        function __construct( $personSex, $personAge )     {          parent::__construct( "PBPHome");            $this->personSex = $personSex;          $this->personAge = $personAge;     }          function printPerson()     {          print( $this->name. " is ".$this->personSex. ",age is ".$this->personAge );      }  }
    查看全部
  • 3.clone魔术方法 例子: 你可能会想复制一个新的窗口,保持所有属性与原来的窗口相同,但必须是一个新的对象(因为如果不是新的对象,那么一个窗口中的改变就会影响到另一个窗口)。还有一种情况:如果对象 A 中保存着对象 B 的引用,当你复制对象 A 时,你想其中使用的对象不再是对象 B 而是 B 的一个副本,那么你必须得到对象 A 的一个副本。
    查看全部
  • 1.对象比较: 比较运算符==:判断两个实例的所有属性相同(即使占用不同的内存空间) 全等运算符===:判断两个实例是否为同一个对象的引用,即是否指向同一个内存空间 2.var_dump 此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。 <?php $a = array(1, 2, array("a", "b", "c")); var_dump($a); ?> 输出结果: array(3) { [0]=> int(1) [1]=> int(2) [2]=> array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" } }
    查看全部
  • 零三总结: ::范围解析运算符 可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。 当在类定义之外引用到这些项目时,要使用类名。 可以通过变量来引用类,该变量的值不能是关键字(如 self,parent 和 static)。 当一个子类覆盖其父类中的方法时,PHP 不会调用父类中已被覆盖的方法。是否调用父类的方法取决于子类。这种机制也作用于构造函数和析构函数,重载以及魔术方法。
    查看全部
  • [B]属性的重载 属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性。 __get():获取不存在或者权限不够的属性的时候会自动触发 private $ary = array(); //读取不存在属性 public function __get($key) {//由于这里的数组属性是private的,因此触发该方法实现传入数组的键值 if (isset($this->ary[$key])) { return $this->ary[$key]; } return null; } 当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用。用"不可访问属性(inaccessible properties)"和"不可访问方法(inaccessible methods)"来称呼这些未定义或不可见的类属性或方法。
    查看全部
  • PHP的重载: [A]__call 方法重载实现对于不存在方法的调用 signature: public function __call($name,$args) 按照网上的说法,实际上是一个伪重载; 因为重载必须符合以下两个条件: 1、函数参数的个数不一样。 2、参数的类型不一样。 这两点,PHP都没有办法满足,您可以对函数多添加参数,只是相当于多传了个临时变量。而弱类型本来就不区分,所以无法通过这些来实现。 所以PHP的提供了一个魔术方法,mixed __call ( string name, array arguments )。根据官方文档,称此方法可以实现函数重载。当调用对象中一个不存在的方法的时候,如果定义了__call()方法,则会调用该方法。
    查看全部
  • 调用父类的方法: parent::speedUp() 想要扩展Car类,覆盖父类的speedUp()方法,并且在父类的此方法的基础上使速度雷家加50 public function speedUp(){ $this->speed = parent::speedUp()+ 50; }
    查看全部
  • 1.静态函数: public static function speedUp(){ //不允许调用伪变量、不允许实例化对象后调用该方法 //表示当前对象的时候,可以使用:self:: 表示父类的时候,parent:: return self::$speed+=10; }
    查看全部
  • 2. 构造函数定义成了私有方法,则不允许直接实例化对象了,这时候一般通过静态方法进行实例化,在设计模式中会经常使用这样的方法来控制对象的创建,比如单例模式只允许有一个全局唯一的对象。 class Car {//这是一个CAR类    private function __construct() {//这是类的构造方法,私有,决定了外部不能直接实例化CAR类        echo 'object create';    }    private static $_object = null;//先定义一个私有静态变量,内部才能访问,初始值为NULL,啥都没有    public static function getInstance() {//方法为公共静态的,外部可以直接用类名::方法名访问        if (empty(self::$_object)) {//先判断变量是不是存着东西了(程序里曾实例化了保存过),没东西才执行if里头的,如果有了,表示已经实例化过这个类,不用再实例化了,意义在于俗称单例模式,保证整个程序中只存在一个该类的实例化对象            self::$_object = new Car(); //内部方法可以调用私有方法,因此这里可以创建对象        }        return self::$_object;//返回该静态变量,这样通过该方法就能得到实例化后的类。如果没实例化过,返回的就是新得到的实例。如果以前实例过,返回的就是以前已经曾经实例化好的。意义前头已说明。    } } //$car = new Car(); //这里不允许直接实例化对象 $car = Car::getInstance(); //通过静态方法来获得一个实例 关键点:类中的静态属性作用类似于全局,深入理解可详搜索下堆栈区存放,不理解也不影响,只需知道它不同于一般函数变量使用后就被释放,所以方法中判断它是否empty的意义就在于此,实现单例功能。 常用于框架底层一些服务型的类,只需实例一次,或只能被实例一次的情况。 } }
    查看全部
  • 在unset之后添加代码,析构函数会比这些代码先执行。而不添加unset的话,所有的代码执行完以后才会执行对象的析构函数
    查看全部
  • 在子类中如果定义了__construct则不会调用父类的__construct,如果需要同时调用父类的构造函数,需要使用parent::__construct()显式的调用。
    查看全部

举报

0/150
提交
取消
课程须知
需要有一定的网页基础知识如HTML、CSS样式等,并且已经学习完成《PHP入门篇》对PHP已经有了简单的了解,如变量、常量、数据类型等。
老师告诉你能学到什么?
全面的掌握PHP的理论知识与实践中的应用方法,提高编程能力与掌握网页开发技能。
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!