当前位置:首页 » 编程语言 » phpset方法

phpset方法

发布时间: 2022-05-25 04:52:21

A. php __get和__set魔术方法在面向对象中的使用问题

php的面向对象思想编程中声明方法有三种不同的权限:public protect private。
public:权限是最大的,可以内部调用,实例调用等。
protected: 受保护类型,用于本类和继承类调用。
private: 私有类型,只有在本类中使用。
这些权限同样可以应用在变量声明中。
__set __get 都是php的魔术方法,主要是为了用来改变类的私有属性用的。
你觉得麻烦可以将private私有的变量改为公共public变量,这个要看需求和个人对面向对象的思考。
追问 : 我想知道的是(用private封装然后用__set或者__get )和(public设置类的属性)有什么不同.都可以取值赋值.
追答 : 没什么不同的,实现的效果都一样,只是private是为了限制访问入口少一些,或者之前用private时没有考虑到有如今的调用情况,所以在加了set或get。 比较public是所有人都可以访问,private是内部人可以访问,从权限来看,private会安全一些。

B. php中get和set有什么区别呀

简单的说一个是取值,一个是赋值。
,“__set()”和“__get()”这两个方法,这两个方法不是默认存在的,而是我们手工添加到类里面去的,像构造方法(__construct())一样, 类里面添加了才会存在,可以按下面的方式来添加这两个方法,当然也可以按个人的风格来添加:
//__get()方法用来获取私有属性
private function __get($property_name)
{
if(isset($this->$property_name))
{
return($this->$property_name);
}else
{
return(NULL);
}
}
//__set()方法用来设置私有属性
private function __set($property_name, $value)
{
$this->$property_name = $value;
}
__get()方法:这个方法用来获取私有成员属性值的,有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值,这个方法不用我们手工的去调用,因为我们也可以把这个方法做成私有的方法,是在直接获取私有属性的时候对象自动调用的。因为私有属性已经被封装上了,是不能直接获取值的(比如:“echo $p1->name”这样直接获取是错误的),但是如果你在类里面加上了这个方法,在使用“echo $p1->name”这样的语句直接获取值的时候就会自动调用__get($property_name)方法,将属性name传给参数$property_name,通过这个方法的内部执行,返回我们传入的私有属性的值。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。
__set()方法:这个方法用来为私有成员属性设置值的,有两个参数,第一个参数为你要为设置值的属性名,第二个参数是要给属性设置的值,没有返回值。这个方法同样不用我们手工去调用,它也可以做成私有的,是在直接设置私有属性值的时候自动调用的,同样属性私有的已经被封装上
了,如果没有__set()这个方法,是不允许的,比如:$this->name=‘zhangsan’, 这样会出错,但是如果你在类里面加上了__set($property_name, $value)这个方法,在直接给私有属性赋值的时候,就会自动调用它,把属性比如name传给$property_name, 把要赋的值“zhangsan”传给$value,通过这个方法的执行,达到赋值的目的。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。为了不传入非法的值,还可以在这个方法给做一下判断。

C. 详解php的魔术方法__get()和__set()使用介绍

先看看php官方文档的解释:
__set()
is
run
when
writing
data
to
inaccessible
properties.
__get()
is
utilized
for
reading
data
from
inaccessible
properties.
究竟用中文怎么翻译呢?
inaccessible
:n.
难达到;难接近;无法理解。
有代码有真相:
复制代码
代码如下:
<?php
error_reporting(E_ALL);
class
stu{
private
$a;
private
$b
=
0;
public
$c;
public
$d
=
0;
//这里的
private
可以用
protected
public
替代
private
function
__get($name)
{
return
123;
}
//这里的
private
也可以用
protected
public
替代
private
function
__set($name,
$value)
{
echo
"This
is
set
function";
}
}
$s
=
new
stu();
var_mp($s->a);
//output:
123
var_mp($s->b);
//output:
123
var_mp($s->c);
//output:
null
var_mp($s->d);
//output:
0
var_mp($s->e);
//output:
123
$s->a
=
3;
//output:
This
is
set
function
$s->c
=
3;
//no
output
$s->f
=
3;
//output:
This
is
set
function
?>
结果分析:
如果没有__get方法,执行
var_mp($s->a)
var_mp($s->b)
会有致命的错误
如果没有__get方法,执行
var_mp($s->e)
会有一个notice,提示没有定义属性
$e
总结:
1.
从一个难以访问的属性读取数据的时候
__get()
方法被调用
2.
向一个难以访问的属性赋值的时候
__set()
方法被调用
3.
难以访问包括:(1)私有属性,(2)没有初始化的属性
4.
__isset()
__unset()
也类似

D. PHP类中的__set()和__get()方法用在什么地方可以用例子说明一下么...

在PHP类中的__set()和__get()方法是针对protect或private变量的,不针对public变量。因为对protect或 private变量在类外不可直接访问,可在类中定义一个public方法来访问这些变量,而__set()和__get()方法相当于这些public 方法,但是在类外的操作时表面上相当于直接访问,但本质上还是通过__set()和__get()方法体内的判断与操作。对于一个类中有多个 protect或private变量,用一对__set()和__get()方法就可操作,编译器将可自己区别用的是哪个变量(由在类外操作时具体的变量名决定,如$object->$name="sss").

如下:

<?php

class test
{
var $name;
var $age;

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

function __get($name)
{
return $this->$name;
}

}

$a = new test();
$a -> name = 5;
echo $a->name . "<br/>" ;

$a -> age = "12";
echo $a->age;
?>

输出结果是,5 和 12。

//php类中静态变量可用一般方法或静态方法来操作,但如果在类中用静态方法,则静态方法中不可有非静态的变量。

E. php中__set和__get要怎么理解

没什么绕不过弯的东西啊,就是表面上定义的那样,php面向对象里面的取值和赋值,没必要把简单的问题复杂化

F. 如何学习PHP set

set_include_path函数理解1
set_include_path函数的作用为设置 include_path 配置选项
1.include_path配置选项如何理解;
2.配置选项是否给定了值;

set_include_path函数理解2
说明
string set_include_path ( string $new_include_path )
为当前脚本设置 include_path 运行时的配置选项。
1.set_include_path函数作用的返回值是否为字符串类型;
2.set_include_path设置当前脚本的配置项如何理解;
3.若成功时返回旧的 include_path 或者在失败时返回 FALSE。

set_include_path函数理解3
<?php// 自 PHP 4.3.0 起可用
echo set_include_path('/usr1/lib/pear');// 在所有版本的 PHP 中均可用 echo ini_set('include_path', '/usr1/lib/pear');
?>
输出结果为:.;C:\php5\pear/usr1/lib/pear

<?php
$path1 = '/usr1/lib/pear';//$path1如何理解;
set_include_path(get_include_path() . PATH_SEPARATOR . $path1);//get_include_path()是否获取到了include_path的配置选项;
?>
输出结果为:.;C:\php5\pear

G. php 中 get 与 set 的 使用,是不是两个函数必须一块使用才不错,分开使用是不是出错

get set 方法 简称为 存储

因为类中的变量 声明为 私有的,在类外 是无法调用的,这是 set就起到了赋值的作用
而 get 则起到了 取值的作用。。 如果变量声明为 共有的(public) 就用不到get 和set 方法了

用存储器 赋值 取值 的好处 最明显的 就是 数据验证
例如: $name 必须为 字母或者中文,不能是 数字
你就可以在set方法里 加上验证判断。符合再赋值,否则抛出异常。
set 和get 并不是要一起用,取决于你对数据的保护,例如 $name你定义一个值后,不想被恶意程序,或者黑客改变,你就可以只定义get方法,而不定义set方法,这样 $name 就变为了一个只读属性。无法更改其值。同理 可以只定义set 而不定义get。。
因此 两个函数不必要一块使用,分开使用也不会出错

H. php类的封装中的函数__set($name,$value) 和__get()的用法

php自动分配的,__set和__get都是php的魔术方法,
当你运行这个
$pc1->name="ssss";
的时候,就自动调用了__set方法。
一般向一个外部不能访问的属性赋值的时候 __set() 方法被调用

I. php __set()和__get()的具体用法,举例说明,谢~

__set()与__get()是两个魔术方法,用于设置和输出对象里的私有成员属性的,存在于类中,详细使用方法

class main{
private $name = "李三";
private function __set($_name,$_val){
$this->$_name=$_val;//当外面直接设置私有成员属性$name的时候被自动调用
}
private function __get($_name){
retrun $this->$_name;//当外面直接使用私有成员属性$name的时候被自动调用
}
}
$my = new main;
$my->name="李四";//此时,就调用了__set()魔术方法
echo $my->name;//此时,就调用__get()魔术方法
谢谢采纳!!!

J. PHP中__get和__set的功能

__get和__set类似于.net中的属性访问器,用于给类中的私有字段赋值。但注意,一般这种方式只能给一个字段赋值,当你的类中有多个字段的时候,建议使用function
getProperty(){}和function
setProperty(value)的形式(类似于java)。
所以上述代码你使用的方式完全错误:
class
Employee
{
$name
public
function
__get()
{
return
$name;//取得私有字段的值
}
public
function
__set($propValue)
{
this->$name
=
$propValue;//给私有字段赋值
}
}

热点内容
趣粉脚本 发布:2025-02-13 02:11:23 浏览:951
压缩的茶叶怎么弄开 发布:2025-02-13 02:11:16 浏览:738
n1ftp服务器 发布:2025-02-13 02:10:39 浏览:347
没有卡没有密码怎么办啊 发布:2025-02-13 01:51:53 浏览:460
linux2个ftp服务器 发布:2025-02-13 01:44:31 浏览:14
戴尔r730网络配置后如何保存 发布:2025-02-13 01:38:27 浏览:344
php用什么编译 发布:2025-02-13 01:37:12 浏览:703
手机缓存的文件路径是在哪 发布:2025-02-13 01:34:58 浏览:563
oppo手机密码哪里设置 发布:2025-02-13 01:30:38 浏览:683
android网易 发布:2025-02-13 01:30:37 浏览:488