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

PHP进阶篇

Jason PHP开发工程师
难度初级
时长 9小时28分
学习人数
综合评分8.90
570人评价 查看评价
9.3 内容实用
8.8 简洁易懂
8.6 逻辑清晰
  • 继承是面向对象程序设计中常用的一个特性,

    汽车是一个比较大的类,我们也可以称之为基类,除此之外,汽车还分为卡车、轿车、东风、宝马等,因为这些子类具有很多相同的属性和方法,可以采用继承汽车类来共享这些属性与方法,实现代码的复用。


    <?php

    class Car {

        public $speed = 0; //汽车的起始速度是0

        

        public function speedUp() {

            $this->speed += 10;

            return $this->speed;

        }

    }

    //定义继承于Car的Truck类

    class Truck extends Car{

        public function speedUp(){

            $this->speed=parent::speedUp()+50;

        }

    }


    $car = new Truck();

    $car->speedUp();

    echo $car->speed;


    查看全部
  • 前面的小节,我们已经接触过访问控制了,

    访问控制通过关键字public,protected和private来实现。

    被定义为 公有的类成员 可以在任何地方被访问。

    被定义为 受保护的类成员 则可以被其自身以及其子类和父类访问。

    被定义为 私有的类成员 则只能被其定义所在的类访问。

    类属性必须定义为公有、受保护、私有之一。为兼容PHP5以前的版本,如果采用 var 定义,则被视为公有。

    class Car {
        $speed = 10; //错误 属性必须定义访问控制
        public $name;   //定义共有属性
    }

    类中的方法可以被定义为公有、私有或受保护。如果没有设置这些关键字,则该方法默认为公有。

    class Car {
        //默认为共有方法
        function turnLeft() {
        }
    }

    如果构造函数定义成了私有方法,则不允许直接实例化对象了,这时候一般通过静态方法进行实例化,在设计模式中会经常使用这样的方法来控制对象的创建,比如单例模式只允许有一个全局唯一的对象。

    class Car {
        private function __construct() {
            echo 'object create';
        }
    
        private static $_object = null;
        public static function getInstance() {
            if (empty(self::$_object)) {
                self::$_object = new Car(); //内部方法可以调用私有方法,因此这里可以创建对象
            }
            return self::$_object;
        }
    }
    //$car = new Car(); //这里不允许直接实例化对象
    $car = Car::getInstance(); //通过静态方法来获得一个实例


    查看全部
  • 静态属性与方法可以在不实例化类的情况下调用,直接使用类名::方法名的方式进行调用。静态属性不允许对象使用->操作符调用。

    class Car {
        private static $speed = 10;
        
        public static function getSpeed() {
            return self::$speed;
        }
    }
    echo Car::getSpeed();  //调用静态方法

    静态方法也可以通过变量来进行动态调用

    $func = 'getSpeed';
    $className = 'Car';
    echo $className::$func();  //动态调用静态方法

    静态方法中,$this伪变量不允许使用。可以使用self,parent,static在内部调用静态方法与属性。

    class Car {
        private static $speed = 10;
        
        public static function getSpeed() {
            return self::$speed;
        }
        
        public static function speedUp() {
            return self::$speed+=10;
        }
    }
    class BigCar extends Car {
        public static function start() {
            parent::speedUp();
        }
    }
    
    echo BigCar::getSpeed();


    查看全部
  • PHP5可以在类中使用__construct()定义一个构造函数,具有构造函数的类,会在每次对象创建的时候调用该函数,因此常用来在对象创建的时候进行一些初始化工作

    class Car {
       function __construct() {
           print "构造函数被调用\n";
       }
    }
    $car = new Car(); //实例化的时候 会自动调用构造函数__construct,这里会输出一个字符串

    子类中如果定义了__construct则不会调用父类的__construct,如果需要同时调用父类的构造函数,需要使用parent::__construct()显式的调用。

    class Car {
       function __construct() {
           print "父类构造函数被调用\n";
       }
    }
    class Truck extends Car {
       function __construct() {
           print "子类构造函数被调用\n";
           parent::__construct();
       }
    }
    $car = new Truck();

    同样,PHP5支持析构函数,使用__destruct()进行定义,

    析构函数指的是当某个对象的所有引用被删除,或者对象被显式的销毁时会执行的函数。

    class Car {
       function __construct() {
           print "构造函数被调用 \n";
       }
       function __destruct() {
           print "析构函数被调用 \n";
       }
    }
    $car = new Car(); //实例化时会调用构造函数
    echo '使用后,准备销毁car对象 \n';
    unset($car); //销毁时会调用析构函数

    当PHP代码执行完毕以后,会自动回收与销毁对象,因此一般情况下不需要显式的去销毁对象。


    查看全部
  • 方法就是在类中的function,

    很多时候我们分不清方法与函数有什么差别,

    在面向过程的程序设计中function叫做函数

    在面向对象中function则被称之为方法

    同属性一样,类的方法也具有public,protected 以及 private 的访问控制。

    访问控制的关键字代表的意义为:
    public:公开的
    protected:受保护的
    private:私有的

    我们可以这样定义方法:

    class Car {
        public function getName() {
            return '汽车';
        }
    }
    $car = new Car();
    echo $car->getName();

    使用关键字static修饰的,称之为静态方法,静态方法不需要实例化对象,可以通过类名直接调用,操作符为双冒号::。

    class Car {
        public static function getName() {
            return '汽车';
        }
    }
    echo Car::getName(); //结果为“汽车”


    查看全部
  • 在类中定义的变量称之为属性,通常属性跟数据库中的字段有一定的关联,因此也可以称作“字段”。

    属性声明是由关键字 public,protected 或者 private 开头,后面跟一个普通的变量声明来组成。

    属性的变量可以设置初始化的默认值,默认值必须是常量。

    访问控制的关键字代表的意义为:

    public:公开的
    protected:受保护的
    private:私有的

    class Car {
        //定义公共属性
        public $name = '汽车';
    
        //定义受保护的属性
        protected $corlor = '白色';
    
        //定义私有属性
        private $price = '100000';
    }

    默认都为public,外部可以访问

    一般通过->对象操作符来访问对象的属性或者方法,

    对于静态属性则使用::双冒号进行访问。

    当在类成员方法内部调用的时候,可以使用$this伪变量调用当前对象的属性。

    $car = new Car();
    echo $car->name;   //调用对象的属性
    echo $car->color;  //错误 
    echo $car->price;  //错误

    受保护的属性与私有属性不允许外部调用,在类的成员方法内部是可以调用的。

    class Car{
        private $price = '1000';
        public function getPrice() {
            return $this->price; //内部访问私有属性    
        }
    }


    查看全部
  • 上一节,我们使用汽车举例来认识了类与对象,本节我们来了解一下类的定义方法,

    类通过关键字class开头,然后是类名与花括号,在花括号中定义类的属性与方法。

    类名必须是字母或下划线开头,后面紧跟若干个字母、数字或下划线,类名最好能够表意,可以采用名词或者英文单词。

    //定义一个类
    class Car {
        //定义属性
        public $name = '汽车';
    
        //定义方法
        public function getName() {
            //方法内部可以使用$this伪变量调用对象的属性或者方法
            return $this->name;
        }
    }

    要创建一个类的实例,可以使用new关键字创建一个对象。

    $car = new Car();
    //也可以采用变量来创建
    $className = 'Car';
    $car = new $className();


    查看全部
  • 类是面向对象程序设计的基本概念,

    通俗的理解类就是对现实中某一个种类的东西的抽象, 

    比如汽车可以抽象为一个类,汽车拥有名字、轮胎、速度、重量等属性,可以有换挡、前进、后退等操作方法。

    通常定义一个汽车类的方法为:

    class Car {
        $name = '汽车';
        function getName() {
            return $this->name;
        }
    }

    类是一类东西的结构描述,

    而对象则是一类东西的一个具体实例,

    例如汽车这个名词可以理解为汽车的总类,但这辆汽车则是一个具体的汽车对象。

    对象通过new关键字进行实例化

    $car = new Car();
    echo $car->getName();

    类与对象看起来比较相似,但实际上有本质的区别,类是抽象的概念,对象是具体的实例。类可以使程序具有可重用性。


    查看全部
    0 采集 收起 来源:PHP类和对象

    2018-12-27

  • foreach循环可以将数组里的所有值都访问到,下面我们展示下,用foreach循环访问关联数组里的值。

    例如:

    $fruit=array('apple'=>"苹果",'banana'=>"香蕉",'pineapple'=>"菠萝");foreach($fruit as $k=>$v){
        echo '<br>水果的英文键名:'.$k.',对应的值是:'.$v;
    }


    查看全部
  • 用数组变量的名字后跟中括号+键的方式来访问数组中的值,键使用单引号或者双引号括起来。

    比如:

    $fruit = array('apple'=>"苹果",'banana'=>"香蕉",'pineapple'=>"菠萝"); 
    
    $fruit0 = $fruit['banana'];
    
    print_r($fruit0);

    上面代码的作用:先把一个数组$fruit中键为banana字符串的值取出来然后赋给一个另一个变量$fruit0,最后输出变量值。


    查看全部
  • 关联数组赋值有两种方式:

    第一种:用数组变量的名字后面跟一个中括号的方式赋值,当然,关联数组中,中括号内的键一定是字符串。比如,$arr['apple']='苹果';

     

    第二种:用array()创建一个空数组,使用=>符号来分隔键和值,左侧表示键,右侧表示值。当然,关联数组中,键一定是字符串。比如,array('apple'=>'苹果');


    查看全部
  • 回顾下前面介绍的内容,PHP有两种数组:索引数组、关联数组。

    索引和关联两个词都是针对数组的键而言的。

    先介绍下,关联数组是指数组的键是字符串的数组

    可以使用下面代码实现:

    $fruit = array(
    
        'apple'=>"苹果",
    
        'banana'=>"香蕉",
    
        'pineapple'=>"菠萝"
    
    );

    可以使用print_r($fruit);语句输出数组键及对应的值。


    查看全部
  • foreach循环可以将数组里的所有值都访问到,下面我们展示下,用foreach循环访问索引数组里的值。

    例如:

    $fruit=array('苹果','香蕉','菠萝');
    foreach($fruit as $k=>$v){
        echo '<br>第'.$k.'值是:'.$v;
    }


    查看全部
  • for循环可以将数组里的所有值都访问到,下面我们展示下,用for循环访问索引数组里的值。

    例如:

    $fruit=array('苹果','香蕉','菠萝');
    
    for($i=0; $i<3; $i++){
    
        echo '<br>数组第'.$i.'值是:'.$fruit[$i];
    
    }


    查看全部
  • 有的时候我们需要把数组中的内容也就是值取出来该怎么办呢?用数组变量的名字后跟的中括号中的键,来访问数组中的值。

    例如:

    $fruit = array('苹果','香蕉');
    $fruit0 = ;
    print_r($fruit0);//结果为苹果

    上面代码的作用:先把一个数组$fruit第一个值取出来然后赋给一个变量$fruit0,最后输出变量值。


    查看全部

举报

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

微信扫码,参与3人拼团

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

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