问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php中怎么用get

发布网友 发布时间:2022-04-07 13:22

我来回答

2个回答

懂视网 时间:2022-04-07 17:43

一般来说,总是把类的属性定义为private,这更符合现实的逻辑。但是,对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数“__get()”和“__set()”来获取和赋值其属性。类似于java中的javabean的操作,使用的方法也类似,只是不需要像javabean中那样,对每个字段进行set和get的操作。只需要加上两个魔术方法即可。即私有成员的设值和取值的操作。

(推荐教程:php视频教程)

在 PHP5 中给我们提供了专门为属性设置值和获取值的方法,“ __set() ”和“ __get() ”这两个方法,这两个方法不是默认存在的,而是我们手工添加到类里面去的,像构造方法 (__construct()) 一样 , 类里面添加了才会存在,可以按下面的方式来添加这两个方法,当然也可以按个人的风格来添加:

//__set() 方法用来设置私有属性
 public function __set($name,$value){
 $this->$name = $value;
 }
 
//__get() 方法用来获取私有属性
 public function __get($name){
 return $this->$name;
 }

__get() 方法:这个方法用来获取私有成员属性值的 , 有一个参数, 参数传入你要获取的成员属性的名称,返回获取的属性值, 这个方法不用我们手工的去调用,因此我们也可以把这个方法做成私有的方法, 是在直接获取私有属性的时候对象自动调用的。

因为私有属性已经被封装上了,是不能直接获取值的 ,但是如果你在类里面加上了这个方法,在使用“ echo$p1->name ” 这样的语句直接获取值的时候就会自动调用 __get($name) 方法,将属性 name 传给参数 $name ,通过这个方法的内部执行,返回我们传入的私有属性的值。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。

__set() 方法:这个方法用来为私有成员属性设置值的,有两个参数,第一个参数为你要为设置值的属性名,第二个参数是要给属性设置的值,没有返回值。这个方法同样不用我们手工去调用,它也可以做成私有的,是在直接设置私有属性值的时候自动调用的。

同样属性私有的已经被封装上了, 如果没有 __set() 这个方法,是不允许的, 比如: $this->name= ‘ zhangsan ’ , 这样会出错,但是如果你在类里面加上了 __set($property_name, $value) 这个方法,在直接给私有属性赋值的时候,就会自动调用它,把属性比如 name 传给 $property_name, 把要赋的值“ zhangsan ”传给 $value ,通过这个方法的执行,达到赋值的目的。

如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。为了不传入非法的值, 还可以在这个方法给做一下判断。

代码如下:

<?php
class Person
{
// 下面是人的成员属性,都是封装的私有成员
private $ name ; // 人的名子
private $ sex ; // 人的性别
private $ age ; // 人的年龄
//__get() 方法用来获取私有属性
private function __get( $ property_name )
{
echo " 在直接获取私有属性值的时候,自动调用了这个 __get() 方法 <br>" ;
if ( isset ( $ this -> $ property_name ))
{
return ( $ this -> $ property_name );
}
else
{
return ( NULL );
}
}
//__set() 方法用来设置私有属性
private function __set( $ property_name , $ value )
{
echo " 在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值 <br>" ;
$ this -> $ property_name = $ value ;
}
}
$ p1 = new Person();
// 直接为私有属性赋值的操作,会自动调用 __set() 方法进行赋值
$ p1 ->name= " 张三 " ;
$ p1 ->sex= " 男 " ;
$ p1 ->age= 20 ;
// 直接获取私有属性的值,会自动调用 __get() 方法,返回成员属性的值
echo " 姓名: " . $ p1 ->name. "<br>" ;
echo " 性别: " . $ p1 ->sex. "<br>" ;
echo " 年龄: " . $ p1 ->age. "<br>" ;
?>

执行结果:

在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值
在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值
在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值
在直接获取私有属性值的时候,自动调用了这个 __get() 方法
姓名:张三
在直接获取私有属性值的时候,自动调用了这个 __get() 方法
性别:男
在直接获取私有属性值的时候,自动调用了这个 __get() 方法
年龄: 20

以上代码如果不加上__get()和__set()方法,程序就会出错,因为不能在类的外部操作私有成员,而上面的代码是通过自动调用__get()和__set()方法来帮助我们直接存取封装的私有成员的。

热心网友 时间:2022-04-07 14:51

php面向对象_get(),_set()的用法

一般来说,总是把类的属性定义为private,这更符合现实的逻辑。但是,对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数“__get()”和“__set()”来获取和赋值其属性。类似于java中的javabean的操作,使用的方法也类似,只是不需要像javabean中那样,对每个字段进行set和get的操作。只需要加上两个魔术方法即可。即私有成员的设值和取值的操作。

在PHP5中给我们提供了专门为属性设置值和获取值的方法,“__set()”和“__get()”这两个方法,这两个方法不是默认存在的,而是我们手工添加到类里面去的,像构造方法(__construct())一样,类里面添加了才会存在,可以按下面的方式来添加这两个方法,当然也可以按个人的风格来添加:

//__set()方法用来设置私有属性

public function __set($name,$value){
$this->$name = $value;
}

//__get()方法用来获取私有属性
public function __get($name){
return $this->$name;
}

__get()方法:这个方法用来获取私有成员属性值的,有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值,这个方法不用我们手工的去调用,因为我们也可以把这个方法做成私有的方法,是在直接获取私有属性的时候对象自动调用的。因为私有属性已经被封装上了,是不能直接获取值的,但是如果你在类里面加上了这个方法,在使用“echo$p1->name”这样的语句直接获取值的时候就会自动调用__get($name)方法,将属性name传给参数$name,通过这个方法的内部执行,返回我们传入的私有属性的值。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。

__set()方法:这个方法用来为私有成员属性设置值的,有两个参数,第一个参数为你要为设置值的属性名,第二个参数是要给属性设置的值,没有返回值。这个方法同样不用我们手工去调用,它也可以做成私有的,是在直接设置私有属性值的时候自动调用的,同样属性私有的已经被封装上

了,如果没有__set()这个方法,是不允许的,比如:$this->name=‘zhangsan’,这样会出错,但是如果你在类里面加上了__set($property_name,
$value)这个方法,在直接给私有属性赋值的时候,就会自动调用它,把属性比如name传给$property_name,把要赋的值“zhangsan”传给$value,通过这个方法的执行,达到赋值的目的。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。为了不传入非法的值,还可以在这个方法给做一下判断。代码如下:

<?php

class
Person

{

//下面是人的成员属性,都是封装的私有成员

private $name; //人的名子

private $sex; //人的性别

private $age; //人的年龄

//__get()方法用来获取私有属性

private function
__get($property_name)

{

echo
"在直接获取私有属性值的时候,自动调用了这个__get()方法<br>";

if(isset($this->$property_name))

{

return($this->$property_name);

}

else

{

return(NULL);

}

}

//__set()方法用来设置私有属性

private function
__set($property_name,
$value)

{

echo
"在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值<br>";

$this->$property_name
= $value;

}

}

$p1=newPerson();

//直接为私有属性赋值的操作,会自动调用__set()方法进行赋值

$p1->name="张三";

$p1->sex="男";

$p1->age=20;

//直接获取私有属性的值,会自动调用__get()方法,返回成员属性的值

echo
"姓名:".$p1->name."<br>";

echo
"性别:".$p1->sex."<br>";

echo
"年龄:".$p1->age."<br>";

?>

程序执行结果:

在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
在直接获取私有属性值的时候,自动调用了这个__get()方法
姓名:张三
在直接获取私有属性值的时候,自动调用了这个__get()方法
性别:男
在直接获取私有属性值的时候,自动调用了这个__get()方法
年龄:20

以上代码如果不加上__get()和__set()方法,程序就会出错,因为不能在类的外部操作私有成员,而上面的代码是通过自动调用__get()和__set()方法来帮助我们直接存取封装的私有成员的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何查被录取到的专业 怎样查被录取的专业 录取后怎样查询录取的专业 录取专业怎么查 已被录取怎么查专业 ghs网络语什么意思_ghs网络语意思出处含义介绍 纸箱企业管理软件 ghs什么意思网络(ghs什么意思网络用语) 《喜羊羊与灰太狼》大结局 0与任何数相加都得原数吗? 你好,我是四川的,我想问下四川大学难考吗,怎么考得起,一般高一本好多分? 我有个朋友心情最近不太好~求个小笑话~能缓和下她的郁闷心情~谢谢 佛供在柜里晚上柜门关上可以吗 开店经验 有一部电影我忘记叫什么名字了,里面主角穿越到李白那个时候,猪脚有一个朋友是个胖子,老是说自己是李白 川大考研听说很难,是真的吗? 怎么更改支付宝里充话费卡的默认号码? 外省考川大研究生考题,录取分数线与川内有区别吗? 开家黄金首饰店需要多大的成本 我能不能把弥勒佛放在带门的橱柜里面? 支付宝付款时需要的验证码的手机号怎么更改啊 我原来那个不用了 在四川的考生考四川大学是不是比其他省的考生要高些啊 介绍物品作文400字 加盟银饰店怎么样 我一个朋友介绍一个院线电影 名字叫不一样的九零后 里面的一个小女孩朋友是他介绍过去演的 不知道真假? 介绍一种物品作文400字左右!急急急急急急急急急急! 电脑强行关机有过一次会怎么样 支付宝用银行卡充值需要短信验证码 那么绑定短信验证码号码的手机怎么更改? 氧饱和度是什么意思? 四川大学难考吗 川大考研难度大吗 打一次除皱针需要多少钱 面团发酵不密封可以吗 有一部电影 里面的男的幻想着自己有一个女朋友 他幻想着拉开浴室的帘子有一个女的 求电 四川大学药剂难考吗? 请问佛供在脚底的柜子里如法吗? 想知道怎么给单位寻找一家专业靠谱的厨房食材配送公司? 菩萨可以供在玻璃书柜中吗? 四川大学考研难吗 win7显卡硬件加速怎么开启 没取票怎么知道检票口 用酵母粉发酵要不要留气孔? win7怎么设置硬件加速? 额头除皱针多少钱 济南海峡去皱针效果怎么样?多少钱一针? 川大考研难不难,怎么才能考研成功 武汉厨房食材配送公司有专业一些的吗?哪家好点? 牛奶可以和芒果一起吃吗? 剩下的酵母粉放到玻璃瓶里面会影响发面的效果吗? 考川大的研究生难不难