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

PHP面向对象编程

难度初级
时长 3小时14分
学习人数
综合评分9.67
292人评价 查看评价
9.9 内容实用
9.7 简洁易懂
9.4 逻辑清晰
  • 对象引用赋值

    查看全部
  • 对象的基本实践

    构造函数function __construct

    当对象不会再被使用的时候会触发析构函数function __destruct

    析构函数一般用于清理程序使用的资源,比如一个程序用了打印机资源,可以在析构函数释放打印机资源‘



    对象引用赋值

    $obj = new cls();

    $newobj1 = $obj

    $newobj2 = &$obj

    $obj 、$newobj1、$newobj2 都是对象的引用

    $obj、$newobj1是对象的两个独立引用,如果其中一个引用改了对象的属性,另一个引用的属性都改了。如果一个引用设置成了null,则不会影响另外一个引用。

    $newobj2是$obj的影子,使用对象的同一个引用,如果其中一个引用改了对象的属性,另一个引用的属性都改了,任何一个赋值为空相当于删除了同一个引用。
    查看全部
    0 采集 收起 来源:本章小结

    2022-11-25

  • function __destruct(){} 析构函数,与构造函数不同的是,构造函数必须在new实例化对象的时候才会被调用

    1.析构函数是在所有程序运行完结束才调用析构函数的,而且是根据后入先出的原则,除非在执行过程中触发了析构函数,会立即调用析构函数
    2.把变量设置为空可以立即调用析构函数
    3.在实例化一个对象并且访问成员属性,再实例第二个对象,再继续访问成员属性,这样析构函数也不会立即触发,直到程序执行结束(就是到末尾啦)
    4 当一个类被实例化,不再引用时会自动调用析构函数

    析构函数一般在程序结束后调用。如果想要提前调用,也就是说想要提前结束,那么就把对象变量设为null,同时如果存在其他引用指向这个对象的变量的话,都要将其变为null,才算该对象不再调用,已经结束。
    查看全部
  • 构造函数:function __construct(){}

    构造函数在对象被实例化的时候自动调用

    $this是PHP中伪变量,表示对象本身
    查看全部
  • 类的定义:

    以关键字calss开始,后面跟着这个类的名称。

    类的命名通常每个单词的第一个字母大写。

    以中括号开始和结束。

    查看全部
  • 3.2    类的实例化

    类的示例化就是通过类定义创建一个类的对象

    类的定义里面属性值都是空的,而对象的属性值都有具体的值
    查看全部
  • 类的概念:

    具有相同属性和方法的对象的集合,类的属性和方法,称为类的成员,即类成员。它不涉及到具体的值

    如果有具体的值的话,则是类的实例化。
    查看全部
  • 2.7    面对对象的基本原则

    对象内部是高内聚的

    -    对象只负责一项特定的职能(职能可大可小)

            -    所有对象相关的内容都封装到对象的

        2.对象对外是低耦合的

            -    外部世界可以看到对象的一些属性(并非全部)

            -    外部世界可以看到对象可以做某些事情(并非全部)
    查看全部
  • 面向对象的基本思路

    识别对象

    - 任何实体都可以被识别为一个对象

    识别对象的属性

            - 对象里面存储的数据被识别为属性

            - 对于不同的业务逻辑,关注的数据不同,对象里面存储的属性也不同

        3. 识别对象的行为

            - 对象自己属性数据的改变

            - 对象和外部交互
    查看全部
  • 面向对象--实质

    面向对象就是把生活中要解决的问题都用对象的方式进行存储

    - 属性

            - 方法

        2.对象与对象之间通过方式的调用完成互动
    查看全部
  • 面向对象编程的基本概念
        什么是面向对象?
        面向对象编程就是在编程的时候数据结构(数据组织方式)都通过对象的结构进行存储
            - 属性、方法
            (编程的时候把数据结构都通过属性、方法的形式组织起来
        为什么要使用面向对象?
        对象的描述方式更贴合真实的世界,程序设计的过程中用对象的视角分析世界的时候能够拉近程序设计和真实世界的距离。

    查看全部
  • 对象的特点
        1.每个对象都是独一无二的(一个人)
        2.对象是特定事物,他的职能是完成特定的功能(学习、生活、工作等)
        3.对象是可以重复使用的 (学习完之后还可以继续学习)
    查看全部
  • 对象的基本组成
    对象包含两部分
    1.对象的组成元素
    是对象的数据模型,用于描述对象的数据
    又被称为对象的属性,或者对象的成员变量
    2. 对象的行为
    是对象的行为模型,用于描述对象能够做什么事情,又被称为对象的方法
    查看全部
  • 面向对象 object oriented 抽象的也是对象。
    查看全部
  • <?php
    class MagicTest{
      public $name;
      public static $arr=[];
      //__tostring会在把对象转换为string的时候自动调用
      public function __tostring(){
          return "this is the class MagicTest";
      }
      //__invoke会在把对象当作一个方法的时候会自动调用
      public function __invoke($x){
          return "__invoke called with parameter".$x."\n";
      }
      //方法重载
      public function __call($name,$arguments){
          echo "Calling ".$name." width parameters: ".implode(',',$arguments)."";
      }
       //静态方法重载
      public static function __callStatic($name,$arguments){
          echo "Static calling ".$name." width parameters: ".implode(',',$arguments)."";
      }
      //-------属性重载------
      public function __get($name){
          return $name;
      }
      public function __set($name,$value){
          self::$arr[$name]=$value;//如动态设置
      }
      public function __isset($name){
          echo "__isset invoked".$name."\n";
      }
      public function __unset($name){
          echo "unset property".$name."\n";
      }
      //-------------clone后实例前执行------------------
      public function __clone(){
          $this->name = "TBD";
      }
    }
    $obj = new MagicTest();
    echo $obj.'\n';
    $obj(5);
    //方法重载
    $obj->runTest("para1","para2");//Calling runTest width para...
    MagicTest::runTest("para1","para2");//Static calling runTest width ...
    //属性重载
    echo $obj->className."\n";
    $obj->className = "MagicClassX\n";
    echo isset($obj->className) .'\n';
    echo empty($obj->className) .'\n';
    unset($obj->className);
    //复制对象实例
    $obj2 = clone $obj;//会执行__clone
    $obj2 ->name = 'obj2';//只改变了obj2,没有改$obj
    
    ?>
    查看全部
  • 1、面向对象--继承 extends

    子类拥有父类定义的类成员

    子类可以修改或调整父类定义的类成员


    在子类中,父类的属性也可以通过$this访问


    extends后面只能跟一个类名,这就是php的单继承原则,这就是php的单继承原则


    2、面向对象--访问控制

    public公有的类成员,所有类可以访问

    protected受保护的类成员,自身和子类可以访问

    private 私有类,类成员只能在类内部访问


    3、面向对象-静态成员

    1)静态属性定义时在访问控制关键字后面添加static关键字即可

    2)静态属性用于保存类的公有数据

    3)静态方法里面只能访问静态属性

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

    5)类的内部可以通过seft::或者static::关键字访问自身静态成员

    6)可以通过parent::关键字访问父类静态成员

    7)可以通过类的名称::在类定义外部访问静态成员


    4、面向对象--final成员

    子类中编写跟父类方法名完全一致的方法可以完成对父类方法的重写overwrite

    不想让子类修改方法,在方法添加final关键字

    final public function


    不想让子类继承类,在类添加final关键字到final class


    5、数据访问

    1)用parent关键字可以访问父类被子类重写的方法

    2)self::可以访问类自身成员方法,也可以用于访问自身静态成员和类常量;不饿能访问类自身的属性;使用常量的时候不需要在常量名称前面添加$符号

    3)static关键字用于访问类自身定义的静态成员,访问静态属性时需要在属性前面添加$符号


    6、面向对象--接口

    1)interface关键字用于定义接口,里面的方法只需定义,不需要具体实现。

    interface ICanEat{

    }

    2)implements 关键字用于便是类实现某个接口

    3)实现了某个接口之后,必须提供接口中定义的方法的具体实现

    4)不能实例化接口

    5)可以用instanceof关键字来判断某个对象是否实现了某个接口,实现了就可以用对象调用方法

    6)可以用extends让接口继承接口,当类实现子接口时,父接口定义的方法也需要在这个类里面具体实现

    7、面向对象--多态

    相同的一行代码,对于传入不同的接口的实现的对象的时候,表现是不同的,这就是多态;这个很重要

    function checkEat($obj){

        if($obj instanceof ICanEat){

            $obj->eat('foo');

        }

    }

    8、面向对象--抽象类


    接口里面的方法是没有实现的,而类里面的方法都是有实现的,那么抽象类就是可以包含没有实现的方法,又有实现的方法。

    //abstract关键字用于定义抽象类

    abstract class ACanEat{

        //

        abstract public function eat($food);//没有实现

        public function breath(){//已实现

            echo 'breath';

        }

    }

    //继承抽象类的关键字是extends

    class Human extends ACanEat{

        //继承抽象类的子类需要实现抽象类中定义的抽象方法

        public function eat($food){

            //实现

        }

    }

    Human可以用breath和eat方法

    查看全部
  • 对象的基本实践

    构造函数function __construct

    当对象不会再被使用的时候会触发析构函数function __destruct

    析构函数一般用于清理程序使用的资源,比如一个程序用了打印机资源,可以在析构函数释放打印机资源‘


    对象引用赋值

    $obj = new cls();

    $newobj1 = $obj

    $newobj2 = &$obj

    $obj 、$newobj1、$newobj2 都是对象的引用

    $obj、$newobj1是对象的两个独立引用,如果其中一个引用改了对象的属性,另一个引用的属性都改了。如果一个引用设置成了null,则不会影响另外一个引用。

    $newobj2是$obj的影子,使用对象的同一个引用,如果其中一个引用改了对象的属性,另一个引用的属性都改了,任何一个赋值为空相当于删除了同一个引用。

    查看全部
    0 采集 收起 来源:本章小结

    2022-11-13

  • 对象引用赋值,什么时候调用析构函数


    62d8c80d000196f609600540.jpg
    查看全部
  • php的使用面向对象的重要性
    查看全部
  • http://img1.sycdn.imooc.com//5f6876e10001de2709130502.jpg



    http://img1.sycdn.imooc.com//5f6877620001ccc309180492.jpg


    。。。。。。。

    查看全部
  • http://img1.sycdn.imooc.com//5f6873560001e78707010166.jpg


    http://img1.sycdn.imooc.com//5f6873f90001506108720209.jpg


    http://img1.sycdn.imooc.com//5f68744400012fee08260062.jpg



    ,,,,,,

    查看全部
  • http://img1.sycdn.imooc.com/5f686dcd0001218306980450.jpg



    http://img1.sycdn.imooc.com/5f686ed50001223308150479.jpg




    • http://img2.sycdn.imooc.com/5f6871f200014a9f08710182.jpg



    http://img1.sycdn.imooc.com/5f687168000199b508300215.jpg

    • ...............

    查看全部
  • <?php// 类的定义以关键字class开始,后面跟类名,类名通常第一个字母大写class NbaPlayer{    public $name="jordan";  //定义属性    public $height="198cm";    public $team="bull";    public function run(){   //定义方法        echo "running";    }    public function shoot(){           echo "shooting";    }   }//类到对象的实例化//类的实例化为对象时使用关键字new$jordan = new NbaPlayer();echo $jordan->name;$jordan->run();$jordan->shoot();?>


    查看全部

  • 类的定义属性值是空的,而对象的属性有具体值。

    查看全部
  • http://img1.sycdn.imooc.com//5f575cbc0001a9de09490461.jpg

    http://img1.sycdn.imooc.com//5f575d220001641609270471.jpg

    。。。。。。。

    查看全部
首页上一页1234567下一页尾页

举报

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

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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