【web 开发基础】PHP中的访问方法(60)

举报
迷彩 发表于 2023/07/22 00:54:24 2023/07/22
【摘要】 前言另一个很好用的函数是访问方法(accessor)。由于OOP思想并不鼓励直接从类的外部访问类的属性,以强调封装性,因此可以使用_get和_set方法来达到此目的,也就是说要使用访问函数。无论何时,类属性被访问和操作,访问方法都会被激发。通过使用它们可以避免直接对类属性的访问。下面通过实例介绍访问方法的使用方法和技巧。访问方法的使用废话不多说,先上代码感受一下它的强大:<?phpclass...

前言

另一个很好用的函数是访问方法(accessor)。由于OOP思想并不鼓励直接从类的外部访问类的属性,以强调封装性,因此可以使用_get和_set方法来达到此目的,也就是说要使用访问函数。无论何时,类属性被访问和操作,访问方法都会被激发。通过使用它们可以避免直接对类属性的访问。下面通过实例介绍访问方法的使用方法和技巧。


访问方法的使用

废话不多说,先上代码感受一下它的强大:

<?php
class Student{
	public $property;
	
	function __set($propName, $propValue){
		$this->$propName = $propValue;
	}
	
	function __get($propName){
		return $this->$propName;
	}
	
}

//类实例化
$zhangsan = new Student();
$zhangsan->name= '张三';
$zhangsan->gender = '男';

$lixiaohua = new Student();
$lixiaohua->name= '李小华';
$lixiaohua->gender = '女';
$lixiaohua->age = 18;


echo $zhangsan->name . "的性别是:" . $zhangsan->gender ."\n";
echo $lixiaohua->name ."今年" . $lixiaohua->age . "岁,性别是:" . $lixiaohua->gender ."\n";

?>

执行结果如下:

  1. $zhangsan为类Student的实例。直接添加属性name和gender,并且赋值,如"$zhangsan->name = "张三"; $zhangsan->gender = "男";,此时,类Student中的_set函数被调用。$lixiaohua实例为同样的过程。另外,$lixiaohua实例添加了一个对象属性age。

  2. echo命令中用到的对象属性,如$zhangsan->name等,则是调用了类Student中的_get函数。

  3. 此例中,_set方法的格式为:

<?php
function _set($propName,$propValue){

    $this->$propName = $propValue;

}

_get方法的格式为:

<?php
function _get($propName){

    return $this->$propName;

}           

其中,$propName为“属性名”,$propValue为“属性值”。这样就可以避免了很多冗长的get和set方法,可以更加灵活地设置和获取类的属性。 当类的属性比较多时,同时又需要使用大量get()和set()方法的时候,使用这种方式或许是个非常不错的选择。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。