php重写实战,php基础实战-类的实例化与重载(2018年9月3日)

实例

/**

* 类的声明与实例化

* 1. 类声明: class;

* 2. 类的实例化: new

* 3. 对象成员的访问:->

*/

//用关键字class声明一个类

class Test1

{

}

//用关键字 new 实例化一个类

$test1 = new Test1();

//给当前对象添加一些属性和方法

$demo1->name = '金刚';

$demo1->sex = '雄性';

$demo1->hello = function(){

return '这是定义一个自定义的类方法';

};

//使用对象访问符:-> 来访问对象中的成员(属性和方法)

echo $demo1->name,': ',$demo1->sex,'
';

//错误的调用方式,因为当前对象方法不是一个普通函数,而是一个对象方法

//echo $demo1->hello();

//正确的调用方式,对象方法应该以回调的方式运行

echo call_user_func($demo1->hello);

2.类常量与类属性的重载

/**

* 类常量,对象初始化,属性的重载

* 1. 类常量可用来创建对象之间的共享数据

* 2. 对象初始化: 用构造方法实现,创建对象之前会自动调用,完全对象的一些初始化工作

*    例如:对象属性初始化,创建对象时自动调用的方法等,方法名称固定:__construct()

* 3.属性重载:在类的外部访问不存在或者无权限访问的属性时,会自动触发此类方法调用

*   属性重载涉及四个方法:__get(),__set(),__isset(),__unset()

*/

class Demo3

{

//类常量:所有对象共享,用类名加范围解析符(::)访问,且默认为公共属性public

//类常量可用来创建对象之间的共享数据

const SITE_NAME = '新浪网';

//声明二个私有属性

private $name;

private $course;

private $grade;

//构造方法

public function __construct($name,$course, $grade)

{

$this->name = $name;

$this->course = $course;

$this->grade = $grade;

//构造方法中不仅可以初始化对象属性,还可以调用类方法

echo $this->show();

}

//输出属性内容

public function show()

{

return $this->name.'的《'.$this->course.'》课程的成绩是: '.$this->grade.'分!';

}

//获取属性的重载

public function __get($name)

{

if ($name == 'grade') {

return $name.'不让看';

}

return $this->$name;

}

//更新属性的重载

public function __set($name, $value)

{

if ($name == 'grade') {

echo $name.'不允许修改','
';

}

$this->$name = $value;

}

//属性检测的重载

public function __isset($name)

{

if ($name == 'grade') {

return false;

}

return isset($this->$name);

}

//销毁属性的重载

public function __unset($name)

{

if ($name == 'grade' || $name == 'name') {

return false;

}

unset($this->$name);

}

}

//访问类常量:类常量可以被该类的所有对象所共享,所以不属于任何一个对象,应该使用类来访问

echo '站点名称: ', Demo3::SITE_NAME, '
';

//实例化Demo3,创建对象

$demo3 = new Demo3('小皮','PHP', 82);

var_dump($demo3);

//访问属性,因为属性全部被封装,所以必须通过一个统一的外部接口访问

echo $demo3->show();

echo '


';

//如果想简化以上操作,可以在实例化之前,在构造方法中调用属性访问接口方法

new Demo3('小皮','PHP', 82);

echo '


';

//属性操作: 获取,设置,检测,销毁

//获取

echo '姓名: ', $demo3->name, '
';   // 访问私有属性,如类中无__get()会出错,如有自动触发

echo '成绩: ', $demo3->grade, '
';  // 可以在__get()进行属性访问的权限控制

//设置

$demo3->course = 'Python';

echo '课程: ', $demo3->course,'
';

$demo3->grade = 65;

//检测,因为grade私有,所以外部检测不到,如类中有__isset()方法就可以检测到

echo isset($demo3->name) ? '存在
' : '不存在
';

echo isset($demo3->grade) ? '存在
' : '不存在
';

//销毁

unset($demo3->course);

echo $demo3->course,'
';

unset($demo3->name);    // 重载方法中__unset()不允许销毁grade和name属性

echo $demo3->name,'
';   // 所以这里仍可以访问到name属性

运行实例 »

点击 "运行实例" 按钮查看在线实例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过融合先进技术,如物联网、大数据、人工智能等,实现校园的智能化管理与服务。政策的推动和技术的成熟为智慧校园的发展提供了基础。该方案强调了数据的重要性,提出通过数据的整合、开放和共享,构建产学研资用联动的服务体系,以促进校园的精细化治理。 智慧校园的核心建设任务包括数据标准体系和应用标准体系的建设,以及信息化安全与等级保护的实施。方案提出了一站式服务大厅和移动校园的概念,通过整合校内外资源,实现资源共享平台和产教融合就业平台的建设。此外,校园大脑的构建是实现智慧校园的关键,它涉及到数据中心化、数据资产化和数据业务化,以数据驱动业务自动化和智能化。 技术应用方面,方案提出了物联网平台、5G网络、人工智能平台等新技术的融合应用,以打造多场景融合的智慧校园大脑。这包括智慧教室、智慧实验室、智慧图书馆、智慧党建等多领域的智能化应用,旨在提升教学、科研、管理和服务的效率和质量。 在实施层面,智慧校园建设需要统筹规划和分步实施,确保项目的可行性和有效性。方案提出了主题梳理、场景梳理和数据梳理的方法,以及现有技术支持和项目分级的考虑,以指导智慧校园的建设。 最后,智慧校园建设的成功依赖于开放、协同和融合的组织建设。通过战略咨询、分步实施、生态建设和短板补充,可以构建符合学校特色的生态链,实现智慧校园的长远发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值