PHP基础之类

面向对象编程就是要把需要解决的问题抽象为类。关于面向对象的思想我想大家都应该在其他语言中或多或少了解过。简单来说就是将事物具有的共性抽出来作为类的属性,

与属性相关的操作作为类方法。


在php中申明一个类需要使用关键字class来实现。这于其他语言是相同的。比如我们声明一个学生的类,例如:

class student{
    private $name;
    private $sex;
    private $age;
    private $classes;
    
    public function setName($values)
    {
        $this->name = $values;
    }
    
    public function setSex($param) {
        $this->sex = $param;
    }
    
    public function setAge($param) {
        $this->age = $param;
    }
    public function setClasses($param) {
        $this->classes = $param;
    }
}

上面代码声明了一个包含学生姓名,性别,年龄和班级的类。其中姓名,性别,年龄和班级是作为student类的私有变量(属性),其中的set方法作为类的公有方法。

关键字public和private定义的是属性和方法的访问权限。private定义的属性只能在类内部使用,public定义的属性或者方法则可以在类的外部被调用。


构造函数和析构函数

构造函数是在对象实例创建的时候自动调用的方法,相反析构函数是在对象销毁的时候自动调用的方法。

构造函数通过__construct定义,析构函数通过__destruct定义。

其中构造函数主要用于创建对象时候初始化成员变量.

class ClassName {

    public $name;
    public $age;

    function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
        echo "construct excute by auto";
    }

    function getValue() {
        echo "<br/>";
        echo "姓名:" . $this->name;
        echo "<br/>";
        echo "年龄:" . $this->age;
    }

    function __destruct() {
        echo "destruct excute by auto";
    }

}

$obj = new ClassName("莉莉", 25);
$obj->getValue();


--->
construct excute by auto
姓名:莉莉
年龄:25destruct excute by auto


访问类中的成员:

如果是在类内部访问成员上面的例子就可以看出来,使用->操作符可以访问类成员。另外在对象的方法执行的时候会自动定义一个特殊变量,那就是上面例子的$this变量,

这个变量表示的是对象本身的引用,它的作用就是完成对象内部成员之间的访问。

另外访问对象成员有时还可以实用“::"符号,使用该符号一般来说可以在以下情况下出现:

1.parent::父类成员---调用父类的成员变量常量的方法

2.self::自身成员---调用当前类的静态成员和常量

3.类名::成员 ---访问类的变量常量


在上面的例子里面我们加一个const变量和一个方法:

const COUNTRY = 'China';
 public function getCountry() {
        echo self::COUNTRY;
        echo "<br/>";
        echo $this->COUNTRY;
        echo "<br/>";
    }

然后我们实例化student类,调用该方法:
$obj = new student();
$obj->getCountry();

输出:
China

Notice: Undefined property: student::$COUNTRY in E:\PHP\PHP_Class\PHP_Class.php on line 37
可见在类中访问const常量应该通过self来访问。


静态方法和属性

在php中,通过static关键字来修饰的成员属性和方法称为静态方法或者静态属性。它的特性就是可以在不实例化类的情况下直接使用。

静态方法和静态属性也被称为类方法,类属性。它与对象的属性的区别就是静态方法或者静态属性是属于类的,而不是被限定在任何一个特定的对象实例。

在类外部可以通过类名::静态属性名/静态方法名的形式来使用,在类内部可以通过self::静态方法名/静态属性名使用。

示例代码如下:

class staticClass {

    static $staticVal = 0;
    public $val = 0;

    static function getStaticVal() {
        echo self::$staticVal;
        echo "<br/>";
    }

    static function setStaticVal($param) {
        self::$staticVal = $param;
        echo self::getStaticVal();
        echo "<br/>";
    }

    function change($param) {
        $this->setStaticVal($param);
    }

}

staticClass::getStaticVal();
staticClass::setStaticVal(100);

$obj = new staticClass();
$obj->change(1000);

-->
0
100
1000



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值