先看代码 :
<?php
classe StrictCoordonnéeClass {
private $arr = array('x' => NULL, 'y' => NULL);
fonction __construct() {
print "StrictCoordinationClass est en cours de création";
imprimer "<br/>" ;
}
fonction __destruct() {
imprimer "<br/>" ;
print "StrictCoordinationClass est en cours de destruction";
}
fonction __get($propriété) {
if (array_key_exists($property, $this->arr)) {
return $this->arr[$property];
} autre {
print "Erreur : Impossible de lire une propriété autre que x & yn" ;
}
}
fonction __set ($ propriété, $ valeur) {
if (array_key_exists($property, $this->arr)) {
$this->arr[$property] = $value;
} autre {
print "Erreur : Impossible d'écrire une propriété autre que x & yn" ;
}
}
}
$obj = new StrictCoordonnéeClass();
$obj->x = 1 ;
imprimer $obj->x;
imprimer "<br/>" ;
$obj->n = 2 ;
imprimer "<br/>" ;
imprimer $obj->n;
?>
输出结果:
StrictCoordinationClass est en cours de création
1
Erreur : Impossible d'écrire une propriété autre que x & y
Erreur : Impossible de lire une propriété autre que x & y
StrictCoordinationClass est en cours de destruction
__construct() et __destruct() sont des applications Java basées sur C.
Comment __get和__set请看下文:
Source : http://www.phpchina.com/html/54/26354-31906.html
.__set() __get() __isset() __unset() est un système privé et privé. ,对属性的读取和赋值操作是Il s'agit de "__get()" et "__set()" et de "__isse". t()”和删除属性的方法“__unset( )”。
Il s'agit d'une application PHP5. Il s'agit de "__set()" et de "__get()" Il s'agit d'un système de gestion des ressources humaines (__construct())面添加了才会存在,可以按下面的方式来添加这两个方法,当然也可以按个人的风格来添加:
//__get() s'occupe de la question
fonction privée__get($property_name) {
if(isset($this->$property_name)) {
return($this->$property_name);
}autre {
retourner(NULL);
}
}
//__set() est une fonction de sélection
fonction privée__set($property_name,$value) {
$this->$property_name=$value ;
}
__get() Fonctionnement :名称,返回获取的属性值,这个方法不用我们手工的去调用,因为我们也可以把这个方法做成私有的方法,是在直接获取私有属性的时候对象自动调用的。因为私有属Il s'agit d'un exemple de "echo $p1->name" "Echo $p1->name" correspond à "echo $p1->name" __get($property_name)方法,将属性name传给参数$property_name,通过这个方法的内部执行,如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。
__set() 方法:有两个参数,第一个参数为你要为设置值的属性名,第二个参数是要给属性设置的值,没有返回值. Il s'agit d'un système d'exploitation de type set(). ,是不允许的,比如:$this->name='zhangsan',这样会出错,但是如果你在类里面加上了 __set($property_name, $value)这个方法,在直接给私有属性赋值的时候,就会自动调用它,把属性比如name传给$property_name,把要赋的值 "zhangsan"传给$value,通过这个方法的执行,达到赋值的目的。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。为了不传入非法的值,还可以在这个方法给做一下判断。代码如下:
<?php
personne de classe {
//下面是人的成员属性, 都是封装的私有成员
privé $nom ; //人的名子
sexe privé; //人的性别
âge privé ; //人的年龄
//__get() s'occupe de la question
fonction privée__get($property_name) {
echo"在直接获取私有属性值的时候,自动调用了这个__get()方法<br>";
if(isset($this->$property_name)) {
return($this->$property_name);
} autre {
retourner(NULL);
}
}
//__set() est une fonction de sélection
fonction privée__set($property_name,$value) {
echo""; echo";
$this->$property_name=$value ;
}
}
$p1=nouvellePersonne();
//Les paramètres de configuration de la fonction //set() sont ceux de la fonction set().
$p1->name="张三";
$p1->sexe="男";
$p1->âge=20 ;
//直接获取私有属性的值, 会自动调用__get()方法,返回成员属性的值
echo"姓名:".$p1->name."<br>";
echo"性别:".$p1->sexe."<br>";
echo"年龄:".$p1->age."<br>";
?>
程序执行结果:
Il s'agit d'un ensemble de fonctions de set(). Il s'agit d'un ensemble de __set() qui contient des informations sur l'utilisation de set(). Il s'agit d'un ensemble de __set() pour tous les utilisateurs.个__get()方法姓名:张三在直接获取私有属性值的时候,自动调用了La fonction __get() est : 20
Il s'agit d'un système get() et d'un set(), et d'un système de gestion des performances. Il s'agit d'un __get() et d'un set().来帮助我们直接存取封装的私有成员的。
__isset() signifie que "isset()" est utilisé pour la fonction isset().入一个变量作为参数,如果传入的变量存在则传"isset()" est considéré comme vrai, mais faux.定可不可以用它呢?分两种情况,如果对象里面成员是公有的, 我们就可以使用这个函数来测定成员属性,如果是私有的成员属性,这个函数就不起作用了,原因就是因为私有的被封装了,在外部不可见。那么我们就不可以在对象的外部Il s'agit de « __isset() » qui correspond à la description de « __isset() » Il s'agit de la fonction "isset()" Il s'agit d'une question de type « __isset() » Il s'agit de « __isset() » qui fonctionne.类里面加上下面这样的代码就可以了:
fonction privée__isset($nm) {
echo" ;
return isset($this->$nm);
}
__unset() est utilisé comme suit : "unset()" est utilisé pour "unset()" et "unset()" est utilisé pour的变量且传回true,参数为要删除的变量"unset()" et "unset()" et "unset()",如果一个对象里面的成员属性是公有的,就可以使用这个函数在对象外面但同Il s'agit d'une application « __unset() » qui est utilisée pour répondre aux questions. "__unset()" indique "unset()" et "unset()" est également utilisé. La fonction "__unset()" indique que "__unset()" est utilisé.来帮我们删除对象内部的私有成员属性,这个方法也可以在类的内部定义成私有的。在对象里面加上下面的代码就可以了:
fonction privée__unset ($nm) {
echo""";
unset($this->$nm);
}
我们来看一个完整的实例:
<?php
personne de classe {
//下面是人的成员属性
privé $nom ; //人的名子
sexe privé; //人的性别
âge privé ; //人的年龄
//__get() s'occupe de la question
fonction privée__get($property_name) {
if(isset($this->$property_name)) {
return($this->$property_name);
}autre{
retourner(NULL);
}
}
//__set() est une fonction de sélection
fonction privée__set($property_name,$value) {
$this->$property_name=$value ;
}
//__isset()方法
fonction privée__isset($nm) {
echo"isset()函数测定私有成员时,自动调用<br>";
return isset($this->$nm);
}
//__unset()方法
fonction privée__unset ($nm) {
echo""";
unset($this->$nm);
}
}
$p1=nouvellePersonne();
$p1->name="ceci est le nom d'une personne";
// si la fonction isset() est définie par la méthode isset(), elle est vraie
echovar_dump(isset($p1->name))."<br>";
echo $p1->nom."<br>";
//在使用unset()函数删除私有成员时,自动调用__unset()方法帮我们完成,删除name私有属性
unset($p1->nom);
//已经被删除了, 所这行不会有输出
echo $p1->nom;
?>
输出结果为:
isset() est utilisé par isset().
booléen (vrai)
c'est le nom d'une personne
Il s'agit d'un ensemble de fonctions unset().
__set()、__get()、__isset()、__unset() est un système de gestion des ressources en ligne, et plus encore.对对象内部私有属性的操作。