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

PHP-面向对象

难度初级
时长 2小时30分
学习人数
综合评分9.50
55人评价 查看评价
9.7 内容实用
9.7 简洁易懂
9.1 逻辑清晰
  • 在实例化一个对象的时候,通常需要初始化。 对象被销毁的时候,需要有回收。所以就用到了类里面的两个内置的方法:构造方法和析构方法。

    构造方法:

    <?php
    class Computer{
        public function __construct()   //内置的构造方法,不用调用直接就会执行
        {
            echo "cpu就绪。。";
            echo "主板就绪。。";
            echo "内存就绪。。";
         }
         public function game()
         {
             echo "---玩游戏---";
          }
    }
    $computer = new Computer();
    $computer->game();  //结果为:cpu就绪。。主板就绪。。内存就绪。。---玩游戏---
    <?php
    class Computer{
        public function __construct($high = 0)   
        {
            if($high){
                echo "高配的cpu就绪。。";
                echo "高配的主板就绪。。";
                echo "高配的内存就绪。。";
             }else{
                echo "cpu就绪。。";
                echo "主板就绪。。";
                echo "内存就绪。。";
             }
         }
         public function game()
         {
             echo "---玩游戏---";
          }
    }
    $computer = new Computer(1);   // 1这个参数就是构造方法的参数
    $computer->game();  //结果为:高配的cpu就绪。。高配的主板就绪。。高配的内存就绪。。---玩游戏---

    析构方法:

    <?php
    class Computer{
        public function game()
        {
            echo "---玩游戏---";
         }
         public function __destruct()    //是析构方法,直接可执行
         {  
              echo "关闭电源。。。";
          }
    }
    $computer = new Computer();
    $computer->game();   //结果为:---玩游戏---关闭电源。。。
    //还可以这样 手动释放对象变量
    unset($computer);
    echo "good job";    //结果为:---玩游戏---关闭电源。。。good job


    类常量:

    <?php
    class Computer
    {
        const YES = ture;     //const关键字定义类常量,类常量一般是大写字母和下划线组成
        const NO = false;
        const ONE = 1;
        
        const TWO = self::ONE + 1;    //在类里用self调用类里的常量
        const THREE = self::TWO + 1;
    }
    var_dump(Computer::THREE);  //在类外面可直接调用类里的常量,结果为:int(3)


    查看全部
  • 调用静态方法self:: 与static::的区别

    selft代表自身;static可以实现后期绑定

    查看全部
    0 采集 收起 来源:后期静态绑定

    2020-06-07

  • 命名空间

    例如:namespace venter;

             namespace venter\session

    调用:命名空间(venter)\ 成员(Imooc())

    将类,函数,常量导入命名空间

    例如:

        use venter\session\Imooc();

        use venter\Imooc as Imooc2;

        use function venter\iLIkeImooc;

        use const venter\Imooc;

    命名空间需要调用全局空间定义的类需要添加“\”;而方法或者常量不需要,因为方法或者常量发现在当前命名空间没找到的话,会去全局命名空间找




    查看全部
    0 采集 收起 来源:命名空间

    2020-06-07

  • 子类继承父类,如果子类没有构造方法,实例化子类的时候会调用父类的构造方法。如果子类中有构造方法,会调用自身子类的构造方法。如果子类中也想调用父类的构造方法,可以用parent调用

    组合和继承?

    查看全部
  • 类常量使用见截图

    查看全部
  • 构造函数必须是public,否则不能创建对象。但是如果设置为private,就可以实现单例模式

    查看全部
  • 对象是类的实例,先有类,才有对象。就像配置单和电脑的关系。

    类是一个代码模板         http://img1.sycdn.imooc.com//5ed4a6c1000152b807250273.jpg

    //定义一个类
    <?php           //类名以字母或下划线开头,后面可跟字母、数字、下划线。
    class Computer {      //类名一般开头的字母大写,为了清晰。当然也可以用小写。
    }
    $computer = new Computer();  //这个对象赋给了这个变量,这个对象叫做Computer类的一个实例。
    var_dump($computer);   //打印出:object(Computer)#1(0){}

    http://img1.sycdn.imooc.com//5ed4a7aa0001fa7e04200264.jpg                  http://img1.sycdn.imooc.com//5ed4a81e0001e06004380283.jpg

    <?php
    class Computer {     
        public $cpu = 'amd 5000';     //属性     
        public $mainboard = '华硕9000x';  //属性     
        private $hd = 1024;         //属性  
                
        public function game($gameName='')    //方法     
        {                
           echo $this->hd;    //要在类里面调用属性,就用this 可以理解为这个类的一个实例(对象)     
         }                  //打印出:1024     
         public function job($work='写代码')   //方法     
         {           
               echo ($this->game());         
          }
     }
     $computer = new Computer();
     var_dump($computer);    //打印出所有的属性:object(Computer)#1 (3) { ["cpu"]=> string(8) "amd 5000"["mainboard"]=> string(11) "华硕9000x" ["hd":"Computer" :private]=>int(1024)}
     var_dump($computer->cpu);   //调用属性 打印出:string(8)"amd 5000"
     var_dump($computer->hd);  //是私有的,不能给外部对象调用  打印出错  ,只能在类的内部使用。
     ?>
     
     <?php
     class Computer {
        public $cpu = 'amd 5000';      //属性  
        public $mainboard = '华硕9000x';  //属性     
        private $hd = 512;         //属性          
        public function game($gameName='')    //方法     
        {                
            if($this->getHdSize() < 1024){      
               echo "硬盘太小玩不了游戏";  
               return false;          
             }             
             return true;        
          }              
          public function job($work='写代码')   //方法     
          {      
              echo ($this->game());  //整个的结果就是打印出:硬盘太小玩不了游戏     
           }     
           public function getHdSize()       //方法     
           {        
                return $this->hd;   //获取硬盘大小     
            }
    }
    $computer = new Computer();


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

    面向对象编程 可使项目模块化

    重用性:设计的每一个模块都可在项目中重复使用

    灵活性:每一个模块都可以很轻松地被替换

    扩展性:在现有的模块上添加新功能

        面向对象:项目由一个个对象组建而成,每个对象都是独立的,他们各司其职,最后像搭积木一样,将各种组合起来,就实现了一个项目。

    查看全部
    2 采集 收起 来源:面向对象介绍

    2020-05-25

  • 类 的复用可直接用:use 类名

    查看全部
    0 采集 收起 来源:Trait关键字

    2020-04-11

  • 对象复制是浅拷贝,会改变对象值,前面加clone,这不会改变原来值。

    查看全部
  • class A {
        public static function who()
        {
            echo "A类的who方法";
        }
        public static function test()
        {
             self::who();//输出A类的who方法
             static::who();//后期绑定输出B类的who方法    }    
    }
    class B extends A {
        public static function who()
        {
            echo "B类的who方法";
        }
    }

    查看全部
    0 采集 收起 来源:后期静态绑定

    2020-04-11

  • $this在当前方法使用

    self指向当前类

    parent指向父类

    查看全部
    0 采集 收起 来源:类的自动加载

    2020-04-10

  • <?php

    class Person
    {
        public ststic $hand = "手";
        public ststic function work()
        {
            return "工作";
         }
    }

    echo (Person::$hand);
    echo (Person::$work());

    //当属性或方法定义为static后,输出时就不需要实例化类了,直接调用


    查看全部
    0 采集 收起 来源:类的自动加载

    2020-04-10

  • 1.

    spl_autoload_register( function( $className ){

        require $className . '.php';

    } )

    2.

    function autoload( $className ){

        require $className . '.php';

    }

    spl_autoload_register( 'autoload' )

    3.方法是在类里面

    class Momo{

        function autoload( $className ){

             require $className . '.php';

        }

    }

    spl_autoload_register( [new Momo, 'autoload' ] )// 第一个参数实例,第二个参数是类的方法

    $imooc = new Imooc();
    var_dump(#imooc);

    查看全部
    0 采集 收起 来源:类的自动加载

    2020-04-10

  • 命名空间一般对类起作用,方法会自动寻找类名。

    查看全部
    0 采集 收起 来源:命名空间

    2020-04-10

举报

0/150
提交
取消
课程须知
学习该课程需要熟悉PHP语法基础,了解PHP的基本使用
老师告诉你能学到什么?
1 对象的基本概念 2 什么是面向对象思想 3 面向对象的特性和规则 4 如何使用面向对象

微信扫码,参与3人拼团

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

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