PHP入门04 -- 面向对象程序设计

一 、PHP实例化对象

  1、注意:在类的成员属性前面一定要有一个修饰词,如果不知道使用什么修饰词,就可以使用 var(关键字),如果一旦有其它的修饰词就不要有 var。

  2、只要是对象中的成员,就必须使用这个对象来访问到这个对象内部的属性和方法

  3、构造函数

    1、是对象创建完成之后,第一个自动调用的方法(特殊);

    2、方法名比较特殊,可以和类名相同名的方法名;

    3、给对象中的成员赋初始值使用的,传参方式

<?php
        class BoyFriend {
            //变量(成员属性)
            var $name = "张三";
            var $age = 18;
            var $height = "175cm";
            var $sex;
            //构造方法: $this => 类本身;sex=>变量;$sex=>初始化参数、
            //一开始就会执行(自动执行),
            function BoyFriend($sex){
                $this -> sex = $sex;
            }
            
            //函数(成员方法)    
            public function fnO($row, $cal){
                return "功能一";
            }    
        }

        //使用类前必须先 new  
        $bf1 = new BoyFriend();

        //调用类中的参数:->sex 不需要加 $
        echo $bf1 -> sex."<br>"
        //调用类中的方法,需要传参数必须传
        echo $bf1 -> fnO("1", "2");
    ?>

  4、封装性是面向对象编程中的三大特性之一,封装就是把对象中的成员属性和成员方法加上访问修饰符,使其尽可能隐藏对象的内部细节,以达到对成员的访问控制(切记不是拒绝访问)

  5、public (公有的 默认的)、private   (私有的)、protected (受保护的)

  6、魔术方法

    __get() 

      1、自动调用,是在直接访问私有成员时,自动调用! 一个参数;(用于替代通用的set赋值方法)

    __set()
      2、自动调用,是在直接设置私有属性时,两个参数;(用于替代通用的get取值方法)

    __isset()  在是用 isset() 判断一个私有属性时否存在时,自动调用 __isset() 魔术方法,参数则是属性名称;(检测对象中成员属性是否存在)

    __unset()  ;(销毁对象中成员属性方法)

二、类的继承性、扩展性

  1、子类使用  extends  继承父类  子类可以将父类中所有的内容继承过来;

  2、private:私有的, 只能类自己用,不能别人用,包括自己的子类也不能用;

  3、protected:保护的权限,只能是自己和自己的子类中可以使用的成员,不能再外面使用

  4、pulic: 公开的权限(默认),所有都可以,自己,子类,类外部都可以使用

    class Person {
        public $name;
        protected $age;
        protected $sex;
        //引入参数
        function __construct($name, $age, $sex) {
            $this->name = $name;
            $this->age = $age;
            $this->sex = $sex;
        }
        public function say() {
            echo "我的名子是:{$this->name},我的年龄是:{$this->age},我的性别是:{$this->sex}。<br>";
        }
        function eat() {
            echo "11111111111111<br>";
        }
        function run() {
        }
    }
    class Student extends Person{
        var $school;
        function study() {
        }
    }
    class Teacher extends  Student {
        var $gz;
        function jiao() {
            echo "我的名子是:{$this->name},我的年龄是:{$this->age},我的性别是:{$this->sex}。<br>";
        }
    }

    $t = new Teacher("高洛峰", 30, "男");
    $t -> jiao();
    echo $t->name;
原文地址:https://www.cnblogs.com/patriot/p/8550795.html