计算机网络/计算机科学与应用/系统/运维/开发

PHP面向对象

类 class:类是具有相同特性的对象的集合

class 类名{

    var $name; //属性

    function func($par1,$par2){ // 方法

    }

}

<?php 
    class Student{
        var $name;
        function say(){
            echo "我的名字叫".$this->name;
        }
    }
?>


对象 object:

$对象名称 = new 类名称();

当程序结束被清除后,对象就会被销毁

<?php 
    $xiaowang = new Student();

使用->操作符 调用对象中成员属性和方法


完整实例:

<?php 
// 定义学生类
class student{
    // 属性
    var $name;
    var $age;
    
    // 方法
    function say(){
        echo "我的姓名".$this->name."<br/>";
        echo "年龄是:".$this->age;
    }
}

$xiaoming = new student();
$xiaoming->name = "小明";
$xiaoming->age = 20;
$xiaoming->say();

/*
    我的姓名小明
    年龄是:20
*/

echo "<br/>";

$xiaohong = new student();
$xiaohong->name ="小红";
$xiaohong->age =18;
$xiaohong->say();

/*
    我的姓名小红
    年龄是:18
*/


类成员访问控制

通过对类的成员添加关键字public、protected或provite来实现对类中成员的访问控制。

如果没有设置这些关键字,PHP将自动解析为public

public : 被public定义的类成员可以在任意地方访问

protected : 所在类子类和父类访问

private :只能在类内部访问


类常量

class product{
    const NAME= 'php';
    function show(){
        echo self::NAME;
    }
}
$p = new product();
$p->show(); //php


方法

class stu{
    // 属性
    private $name;
    
    // 方法
    function setName($name){
        $this->name = $name;
    }
    function getName(){
        echo $this->name."<br/>";
    }
}

// 对象实例化
$s1 = new stu();

// 调用成员方法
$s1->setName('张三');
$s1->getName();  //张三


$this关键字

在类内部访问成员变量和方法时,使用$this关键字,只能在内部使用。


构造方法 __construct()  2个下划线

一个类中只能有一个构造方法,不会被调用

只有在使用new关键字创建对象的时候才会调用构造方法

通常放一些初始化的内容

class stu{
    // 属性
    private $name;
    
    // 构造方法
    function __construct($name){
        $this->name = $name;
    }
    
    // 方法
    function setName($name){
        $this->name = $name;
    }
    
    function getName(){
        echo $this->name."<br/>";
    }
}

// 对象实例化
$s1 = new stu('莉莉');
$s1->getName(); //莉莉


析构方法 __destruct()

静态类成员


静态方法

静态方法不受任何具体对象的限制,所以不需要建立类实例

使用self::表示调用同一类的静态方法

class stu{
    // 属性
    private $name;
    
    // 构造方法
    function __construct($name){
        $this->name = $name;
    }
    
    // 方法
    function setName($name){
        $this->name = $name;
    }
    
    function getName(){
        echo $this->name."<br/>";
    }
    
    // 静态方法
    static function cls($c){
        echo "我在".$c."班级";
    }
}

// 直接通过类名调用静态方法
stu::cls(3); //我在3班级


php 面向对象

读书和赚钱都是一个人最好的修行,前者使人不惑,后者使人不屈,二者结合,便可不困于世,不流于俗

评论

^