您的位置:

php怎么获得头文件中的set,php获取header

本文目录一览:

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,通过这个方法的执行,达到赋值的目的。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。为了不传入非法的值,还可以在这个方法给做一下判断。

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;//给私有字段赋值

}

}

eclipse php中get和set方法的生成设置,右击source中有方法,但是调用不出来

你点击window------prefernces--在上面输入key 搜搜

在General--Keys 这个选项把默认键重置一下

php redis 怎么读取set

?php

$redis = new Redis();

//*********无序集合**********//

//添加set

$redis-

sadd('set1' , 'ab');

$redis-sadd('set1' , 'cd');

$redis-sadd('set1' , 'ef');

//返回集合所有成员

var_dump($redis-smembers('set1'));

//返回集合随机元素

var_dump($redis-srandmember('set1'));

//*********有序集合**********//

//添加zset

$redis-zadd('zset1' , 1 , 'ab');

$redis-zadd('zset1' , 2 , 'cd');

$redis-zadd('zset1' , 3 , 'ef');

//返回指定区间的而元素

$redis-zrange('zset1' , 0 ,1); //0和1之间的元素

//更多请查手册

参考如下:

/*-----保存COOKIE-----*/

$url = 'IP'; //url地址

$post = "id=userpwd=123456"; //POST数据

$ch = curl_init($url); //初始化

curl_setopt($ch,CURLOPT_HEADER,1); //将头文件的信息作为数据流输出

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //返回获取的输出文本流

curl_setopt($ch,CURLOPT_POSTFIELDS,$post); //发送POST数据

$content = curl_exec($ch); //执行curl并赋值给$content

preg_match('/Set-Cookie:(.*);/iU',$content,$str); //正则匹配

$cookie = $str[1]; //获得COOKIE(SESSIONID)

curl_close($ch); //关闭curl

/*-----使用COOKIE-----*/

curl_setopt($ch,CURLOPT_COOKIE,$cookie);

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会安全一些。