为了账号安全,请及时绑定邮箱和手机立即绑定

PHP面向对象编程

难度初级
时长 3小时14分
学习人数
综合评分9.67
292人评价 查看评价
9.9 内容实用
9.7 简洁易懂
9.4 逻辑清晰
    1. 子类中编写跟父类方法名完全一致的方法可以完成对父类方法的重写(overwrite)

    2. 对于不想被任何类继承的类可以在class之前添加final关键字

    3. 对于不想被子类重写的方法,可以在方法定义的前面添加final关键字

    4. 即使方法被重写了,仍然可以用parent调用父类的该名称的方法

    查看全部
    1. 静态属性用于保存类的公有数据

    2. 静态方法里面只能访问静态属性

    3. 静态成员不需要实例化对象就可以访问

    4. 类内访问当前类的静态成员用self/static关键字,子类访问父类的静态成员用parent关键字

    5. 类外可以用类名访问类的静态成员(包括静态属性和静态方法)

    6. $this在类里面代指当前对象

    查看全部
  • php的extends只能继承一个类,即为php的单继承原则

    查看全部
  • 为什么使用面向对象

    查看全部
  • 接口
    查看全部
  • abstract 关键字定义类,即为抽象类。

    抽象类中使用abstract定义声明一个方法,即为抽象方法,不需要具体实现。但在子类中需要实现。若方法没有abstract定义,则需要具体实现。

    查看全部
  • 三大特性:封装、继承、多态。

    多态:一个接口可以被多个类实现,也可以被多个接口继承。并且接口里定义的方法,被实现的方式不一样。则为多态。

    查看全部
  • 1、parent关键字可以调用父类中的方法。即使是被子类重写了。

    2、self关键字可以调用类自身的成员变量和方法,不管是静态成员或者类常量(const CONST_VALUE=“”)

    3、static关键字用于访问类自身的静态成员。

    查看全部
  • final 关键字,让方法不允许被重写,让类不允许被继承。

    查看全部
  • 关键字:
           public:公共;protected:受保护的;private:私有的。

           public:哪里有可以访问的到。

           protected:只能在自身类中,或被继承的子类中访问。

           private:只能在自身类中访问,假如在外部一定要访问,则在类中申明一个方法返回属性。

    以上关键字声明的属性或方法,都是用$this->访问。

    查看全部
  • static关键字可用于声明属性或方法为静态成员。

    1、用static关键字,在类内部访问,用self或static加::即可访问;如子类要访问,则使用parent加::访问。访问属性时需注意要加上$符号。

    2、静态成员不需要实例化即可访问,则类名::静态成员名即可

    3、静态成员是用于保存类的共有数据。

    查看全部
  • <?php 

    class NbaPlayer{

    public $name;

    function __clone(){

    $this->name='TBD';

    }

    }

    $james=new NbaPlayer();

    $james->name='james'."\n";

    echo $james->name;

    $james2=clone $james;

    echo "Before set up jame2s's:".$james2->name."\n";

    $james2->name='james2';

    echo "james's:".$james->name."\n";

    echo "james2's:".$james2->name."\n";


     ?>


    __clone比较常用,用于对一个对象操作,但不想影响原有数据时。

    查看全部
  • <?php 

    class MagicTest{

    //__tostring会在把对象转换为string时自动调用

    public function __tostring(){

    return "This is the class MagicTest";

    }

    //__invoke会把在对象当做一个方法的时候自动调用

    public function __invoke($x){

    echo "_invoke called with parameter ".$x."\n";


    }

    //方法的重载

    //这个方法的参数第一个就是调用的方法的名称,第二个参数是方法调用的参数组成的数组

    public function __call($name,$arguments){

    echo "calling ".$name." with parament:".implode(",",$arguments)."\n";

    }

    //静态方法的重载,需要将这个方法设定成static

    public static function __callStatic($name,$arguments){

    echo "calling static ".$name. " with parament:".implode(",",$arguments)."\n";

    }

    //属性承载

    public function __get($name){

    return "getting  the property ".$name;

    }

    public function __set($name,$value){

    echo "setting the property".$name." to value".$value."\n";

    }


    public function __isset($name){

    echo "__isset invoked\n";

    return false;

    }

    public function __unset($name){

    echo "unsetting property ".$name."\n";

    }

    }




    $obj=new MagicTest();

    // echo $obj."\n";

    // $obj(5);

    // $obj->runTest("para1","para2");

    // //静态调用

    // MagicTest::runTest("para1","para2");

    echo $obj->ClassName."\n";

    $obj->ClassName='magicClassX';

    echo '$obj->ClassName is set?'.isset($obj->ClassName)."\n";

    echo '$obj->ClassName is empty?'.empty($obj->ClassName)."\n";

    unset($obj->ClassName);

     ?>

    通过__get __set __isset __unset这四个魔术方法我们可以对没有被的类进行操作

    查看全部
  • <?php 

    class MagicTest{

    //__tostring会在把对象转换为string时自动调用

    public function __tostring(){

    return "This is the class MagicTest";

    }

    //__invoke会把在对象当做一个方法的时候自动调用

    public function __invoke($x){

    echo "_invoke called with parameter ".$x."\n";


    }

    //方法的重载

    //这个方法的参数第一个就是调用的方法的名称,第二个参数是方法调用的参数组成的数组

    public function __call($name,$arguments){

    echo "calling ".$name." with parament:".implode(",",$arguments)."\n";

    }

    //静态方法的重载,需要将这个方法设定成static

    public static function __callStatic($name,$arguments){

    echo "calling static ".$name. " with parament:".implode(",",$arguments)."\n";

    }

    public function __get($name){

    return "getting  the property ".$name;

    }

    public function __set($name,$value){

    echo "setting the property".$name." to value".$value."\n";

    }

    }




    $obj=new MagicTest();

    // echo $obj."\n";

    // $obj(5);

    // $obj->runTest("para1","para2");

    // //静态调用

    // MagicTest::runTest("para1","para2");

    echo $obj->ClassName."\n";

    $obj->ClassName='magicClassX';


     ?>

     使用一个类库时,可以使用__get来获取某个方法

    查看全部
  • <?php 

    class MagicTest{

    //__tostring会在把对象转换为string时自动调用

    public function __tostring(){

    return "This is the class MagicTest";

    }

    //__invoke会把在对象当做一个方法的时候自动调用

    public function __invoke($x){

    echo "_invoke called with parameter ".$x."\n";


    }

    //方法的重载

    //这个方法的参数第一个就是调用的方法的名称,第二个参数是方法调用的参数组成的数组

    public function __call($name,$arguments){

    echo "calling ".$name." with parament:".implode(",",$arguments)."\n";

    }

    //静态方法的重载,需要将这个方法设定成static

    public static function __callStatic($name,$arguments){

    echo "calling static ".$name. " with parament:".implode(",",$arguments)."\n";

    }

    }




    $obj=new MagicTest();

    // echo $obj."\n";

    // $obj(5);

    $obj->runTest("para1","para2");

    //静态调用

    MagicTest::runTest("para1","para2");

     ?>

    通过魔术变量实现同一个方法的正常调用和非正常调用

    查看全部

举报

0/150
提交
取消
课程须知
1、本门课程是立志想成为优秀程序员的必修课 2、基本概念部分适合所有人学习 3、实践部分则需要有基本的PHP知识,这样会更加有利于你对面向对象的理解和掌握
老师告诉你能学到什么?
1、面向对象的基本概念 2、面向对象的基本思路 3、面向对象的基本原则 4、类的概念和PHP实践 5、继承的概念和案例实践 6、接口的概念和案例实践 7、多态的概念和案例实践 8、PHP中的魔术方法基本实践

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

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