码迷,mamicode.com
首页 > Web开发 > 详细

PHP面向对象

时间:2016-11-13 01:41:00      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:访问   abs   实例化   类型   call()   中国   elf   function   推荐   

<?php

//封装 __set() __get() __isset() __unset()
//__get()函数==>表示调用私有属性,如果是访问一般成员属性则不会调用该方法
/*class Person{
private $age;
function __get($var){
echo "哈哈哈".$var;//var代表被调用的变量
return $this->$var;
}
}
$p=new Person();
echo $p->age;
class Person{
private $name;
private $age;
function __get($var){
if($var=="name")
return $this->name;
if($var=="age")
return $this->age;
}
function __set($var,$value){
if($var=="name")
return $this->name=$value;
if($var=="age")
return $this->age=$value;
}
}
class Student extends Person{
function Say($avr){
echo $this->name."说".$avr;
}
}
$s=new Student();
$s->__set("name","张三");
$s->Say("哈哈哈哈");
//Static属性==>本类名调用可以使用self,但在外部还得用类名调用
class person{
var $name;
static $country="中国";
function Say(){
echo "我是".self::$country."人";//person::$country
}
}
$p=new person();
person::$country="外星";
$p->Say();
//static方法 以下俩种方法都可以调用静态方法
class person{
var $name;
static $country="中国";
function Say(){
echo "我是".self::$country."人";
}
}
person::Say();//推荐使用
$p=new person();
$p->Say();
//const 常量修饰符
class person{
var $name="我";
const COUNTRY="中国";//常量无法更改值
function Say(){
echo "我是".self::COUNTRY."人";
}
}
person::Say();
//__tostring()函数==>被定义的时候必须返回一个字符串的值
class person{
var $name="我";
function __toString(){
return "这是一个对象类型,无法直接输出";
}
}
$p=new person();
echo $p;
//__clone()函数==>克隆出一个新的对象,这两个对象的内容一样,但在堆中的地址不一样
class person{
var $name="我";
function __Clone(){
$this->name="是clone出来的副本";
}
}
$p=new person();
$e=new person();
$e=clone $p;
echo $p->name;
echo $e->name;
//__call()函数==>可以避免程序崩溃,只输出一个提示内容
class person{
var $name="我";
function __call($funname,$args){//第一个参数为调用的方法名。第二个参数为调用方法时传递的参数。
echo $funname."方法不存在<br>";
print_r($args);
}
}
$p=new person();
$p->fun(1,2,3);
echo "<br>程序未崩溃";
//抽象方法,一个类里面有抽象方法就是抽象类,抽象类不能被实例化,只能被继承实现
abstract class Demo{
abstract function fun1();
function fun2(){
echo "哈哈哈";
}
}
class Test extends Demo{
function fun1(){
echo "覆盖抽象方法";
}
}
//Test::fun1();
$t=new Test();
$t->fun1();
//接口是一种特殊的抽象类。
//所有的成员属性必须是常量,所有的方法都是抽象的,所有的成员都必须是public
class Demo{

}
interface lone{
const B="hhhh";
function fun();
}
class one extends Demo implements lone{
function fun(){
echo "哈哈哈哈";
}
}
one::fun();*/

PHP面向对象

标签:访问   abs   实例化   类型   call()   中国   elf   function   推荐   

原文地址:http://www.cnblogs.com/phpzhang/p/6057729.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!