当前位置:  编程技术>php
本页文章导读:
    ▪php入门教程(十四) php面向对象中的魔术方法 __set()、__get()、__isset() 与 __unset()      本节内容: php面向对象中的魔术方法 包括: __set() 方法用于设置私有属性值。 __get() 方法用于获取私有属性值。 __isset()() 方法用于检测私有属性值是否被设定。 __unset() 方法用于删除私.........
    ▪php入门教程(十三) php面向对象之封装      本节内容: php面向对象之封装 php面向对象的封装性: 1,就是把对象的成员(属性,方法)结合成一个独立的相同单位,并尽可能隐藏对象的内部细节。 public protected private 私有的,用这个关.........
    ▪php入门教程(十二) php面向对象、构造方法与析构方法      本节内容: php面向对象中的构造方法与析构方法 1,构造方法 大多数类都有一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对.........

[1]php入门教程(十四) php面向对象中的魔术方法 __set()、__get()、__isset() 与 __unset()
    来源: 互联网  发布时间: 2013-12-24

本节内容:
php面向对象中的魔术方法

包括:
__set() 方法用于设置私有属性值。
__get() 方法用于获取私有属性值。
__isset()() 方法用于检测私有属性值是否被设定。
__unset() 方法用于删除私有属性。
实际应用中,经常会把类的属性设置为私有(private),那么需要对属性进行访问时,就会变得麻烦。虽然可以将对属性的访问写成一个方法来实现,但 PHP 提供了一些特殊方法来方便此类操作。
__set()
__set() 方法用于设置私有属性值:
 

代码示例:
function __set($property_name, $value)
{
$this->$property_name = $value;
}
 

在类里面使用了 __set() 方法后,当使用 $p1->name = "张三"; 这样的方式去设置对象私有属性的值时,就会自动调用 __set() 方法来设置私有属性的值。
__get()
__get() 方法用于获取私有属性值:
 

代码示例:
function __set($property_name, $value)
{
return isset($this->$property_name) ? $this->$property_name : null;
}

例子:
 

代码示例:
<?php 
class Person { 
private $name; 
private $sex; 
private $age; 
 
//__set()方法用来设置私有属性 
function __set($property_name, $value) {  
echo "在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值<br />"; 
$this->$property_name = $value;  
}  www.
//__get()方法用来获取私有属性 
function __get($property_name) {  
echo "在直接获取私有属性值的时候,自动调用了这个 __get() 方法<br />"; 
return isset($this->$property_name) ? $this->$property_name : null; 


 
$p1=new Person(); 
//直接为私有属性赋值的操作, 会自动调用 __set() 方法进行赋值 
$p1->name = "张三"; 
//直接获取私有属性的值, 会自动调用 __get() 方法,返回成员属性的值 
echo "我的名字叫:".$p1->name;  
?> 

运行,输出:
在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值
在直接获取私有属性值的时候,自动调用了这个 __get() 方法
我的名字叫:张三

__isset()
__isset() 方法用于检测私有属性值是否被设定。
如果对象里面成员是公有的,可以直接使用 isset() 函数。如果是私有的成员属性,那就需要在类里面加上一个 __isset() 方法:
 

代码示例:
private function __isset($property_name)
{
return isset($this->$property_name);
}

这样当在类外部使用 isset() 函数来测定对象里面的私有成员是否被设定时,就会自动调用 __isset() 方法来检测。
__unset()
__unset() 方法用于删除私有属性。
同 isset() 函数一样,unset() 函数只能删除对象的公有成员属性,当要删除对象内部的私有成员属性时,需要使用__unset() 方法:
 

代码示例:
private function __unset($property_name)
{
unset($this->$property_name);
}

>>> 查看更多 php入门教程 <<<


    
[2]php入门教程(十三) php面向对象之封装
    来源: 互联网  发布时间: 2013-12-24

本节内容:
php面向对象之封装

php面向对象的封装性:
1,就是把对象的成员(属性,方法)结合成一个独立的相同单位,并尽可能隐藏对象的内部细节。
public protected
private 私有的,用这个关键字修饰的成员,只能在对象内部访问(只有用$this访问),不能在对象外部使用。

例子:
 

代码示例:

<?php
class Person{ 
   private $name; 
   private $age; 
   private $sex; 
function __construct($name="",$age=20,$sex="male"){ 
  $this->name=$name; 
  $this->age=$age; 
  $this->sex=$sex; 

function getPro($name){ 
  return $this->$name; 

function setAge($age){ 
  if($age>100||$age<0){ 
  return; 
} // www.
$this->age=$age; 

function getAge(){ 
  if($this->age<30){ 
  return $this->age; 
}elseif($this->age<40){ 
  return $this->age-5; 
}elseif($this->age<50){ 
  return $this->age-10; 
}else{ 
  return $this->age-15; 


function say(){ 
  echo "我的名字是:".$this->name.",年龄是:".$this->age.",性别是:".$this->sex.'<br>'; 

function __destruct(){ 
echo $this->name.",再见"."<br>"; 

}

$p1=new Person("rayhooo",26,"male"); 
$p1->say(); 
echo $p1->getPro("name").'<br>'; 
$p1->setAge(45); 
echo $p1->getAge().'<br>';

>>> 查看更多 php入门教程 <<<


    
[3]php入门教程(十二) php面向对象、构造方法与析构方法
    来源: 互联网  发布时间: 2013-12-24

本节内容:
php面向对象中的构造方法与析构方法

1,构造方法
大多数类都有一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方法。

构造函数的声明与其它操作的声明一样,只是其名称必须是__construct( )。这是PHP5中的变化,以前的版本中,构造函数的名称必须与类名相同,这种在PHP5中仍然可以用,但现在以经很少有人用了,这样做的好处是可以使构造函数独立于类名,当类名发生改变时不需要改相应的构造函数名称了。为了向下兼容,如果一个类中没有名为__construct( )的方法,PHP将搜索一个php4中的写法,与类名相同名的构造方法。

格式:function __construct ( [参数] ) { ... ... }
在一个类中只能声明一个构造方法,而是只有在每次创建对象的时候都会去调用一次构造方法,不能主动的调用这个方法,所以通常用它执行一些有用的初始化任务。比如对成属性在创建对象的时候赋初值。

例子:
 

代码示例:
<? 
//创建一个人类 
class Person 

//下面是人的成员属性 
var $name;        
var $sex;         
var $age;        
//定义一个构造方法参数为$name、$sex和 $age 
function __construct($name, $sex, $age) 

//通过构造方法传进来的$name给成员属性$this->name赋初使值 
$this->name=$name; 
//通过构造方法传进来的$sex给成员属性$this->sex赋初使值 
$this->sex=$sex; 
//通过构造方法传进来的$age给成员属性$this->age赋初使值 
$this->age=$age; 

//这个人的说话方法 
function say() 

echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>"; 


//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄 
$p1=new Person(“张3”,”男”, 22); 
$p2=new Person(“李4”,”女”, 33); 
$p3=new Person(“王5”,”男”, 44); 
//下面访问$p1对象中的说话方法 
$p1->say(); 
//下面访问$p2对象中的说话方法 
$p2->say(); 
//下面访问$p3对象中的说话方法 
$p3->say(); 
?> 

输出结果:
我的名子叫:张3性别:男我的年龄是:22
我的名子叫:李4性别:女我的年龄是:33
我的名子叫:王5性别:男我的年龄是:44

2,析构函数:
与构造函数相对的就是析构函数。析构函数是PHP5新添加的内容,在PHP4中没有析构函数。析构函数允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件,释放结果集等,析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行,也就是对象在内存中被销毁前调用析构函数。与构造函数的名称类似,一个类的析构函数名称必须是__destruct( )。析构函数不能带有任何参数。

格式:function __destruct ( ) { ... ... }

例子,
 

代码示例:
<? 
//创建一个人类 
class Person 

//下面是人的成员属性 
var $name;  
var $sex;  
var $age;  
//定义一个构造方法参数为$name、$sex和$age 
  
function __construct($name, $sex, $age) 

//通过构造方法传进来的$name给成员属性$this->name赋初使值 
$this->name=$name; 
//通过构造方法传进来的$sex给成员属性$this->sex赋初使值 
$this->sex=$sex; 
//通过构造方法传进来的$age给成员属性$this->age赋初使值 
$this->age=$age; 

//这个人的说话方法 
function say() 

echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>"; 

//这是一个析构函数,在对象销毁前调用 
function __destruct() 
{  // www.
echo “再见”.$this->name.”<br>”; 
  

//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄 
$p1=new Person(“张3”,”男”, 22); 
$p2=new Person(“李4”,”女”, 33); 
$p3=new Person(“王5”,”男”, 44); 
//下面访问$p1对象中的说话方法 
$p1->say(); 
//下面访问$p2对象中的说话方法 
$p2->say(); 
//下面访问$p3对象中的说话方法 
$p3->say(); 
?>

输出结果:
我的名子叫:张3性别:男我的年龄是:22
我的名子叫:李4性别:女我的年龄是:33
我的名子叫:王5性别:男我的年龄是:44

销毁张3
销毁李4
销毁王5

>>> 查看更多 php入门教程 <<<


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3