標籤:訪問 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物件導向