15-1类属性与类常量–PHP实战开发教程

15-1类属性与类常量–PHP实战开发教程

痞芳甲盛磋腑滤枢蹦俱防连超


新建目录15 在15下新建class目录  class下新建User1.php 在15下新建demo1.php

15-1类属性与类常量–PHP实战开发教程第1张

知识点:

类属性与类常量
1.类属性仅允许使用以下类型的数据进行初始化
标量和数组字面量:字符串,数值,常量,数组,原型文档(php5.3+)
2.不允许使用:变量,表达式,对象
3.类常量使用关键字const声明,不允许设置访问限制符,强制为public,不能更改
4.类常量是属性类的,不属性它的某个实例对象,必须使用类才可以访问
5.访问类常量要使用范围解析符::,双冒号
在类中使用关键字self表示当前类,在外部可直接使用类名

User1.php:

<?php
//用户类
define('SITE_NAME','萌面人资料铺');
class User1
{
    //声明属性
    private $siteName=SITE_NAME;
    private $name='mengmianren';
    private $email='mengmianren@123.com';
    private $course=['php','java','python'];

//    错误写法:
//    private $tel=$stml;//错误,不能为变量
//    private $tel=5+10;//错误,不能为表达式
//    private $a=$this->name;这种写法也是错的,不能为表达式
    const LECTURE="萌面人";//常量尽量大写,且应该初始化,不写public 默认即为public

    //构造方法:
    public function  __construct($name="",$email="",$siteName="",array $course=[])
    {
        //如果传参,则使用新值初始化属性,否则使用默认值
        $name ? ($this->name=$name) : $this->name;
        $email ? ($this->email=$email) : $this->email;
        $siteName ? ($this->siteName=$siteName) : $this->siteName;
        $course ? ($this->course=$course) : $this->course;
    }

    //查询器
    public function __get($name)
    {
        return $this->$name;
    }

    //设置器
    public function __set($name, $value)
    {
        return $this->$name=$value;
    }

}

demo1.php:

<?php
//类属性和类常量
require "./class/User1.php";

$user1=new User1();
echo $user1->name."<br>";
echo $user1->email."<br>";
echo $user1->siteName."<br>";
echo "<pre/>";
print_r($user1->course);

echo "<hr color='red'>";
$user2=new User1('萌面人','admin@123.com','www.xuexianswer.com',['html','css','javascript']);
echo $user2->name."<br>";
echo $user2->email."<br>";
echo $user2->siteName."<br>";
echo "<pre/>";
print_r($user2->course);

//常量的访问与静态访问一致:
echo "<hr color='red'>";
echo User1::LECTURE;

执行:

15-1类属性与类常量–PHP实战开发教程第2张


归极掳凭怀敝攫高姆揣东鳞汲