基于PHP5魔术常量与魔术方法的详解
本篇文章是对PHP5中的魔术常量与魔术方法进行了详细的分析介绍,需要的朋友参考下
魔术常量:
1。__LINE__
返回文件中的当前行号。
2。__FILE__
返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自PHP4.0.2 起,__FILE__总是包含一个绝对路径,美国空间,而在此之前的版本有时会包含一个相对路径。
3。__FUNCTION__
返回函数名称(PHP4.3.0 新加)。自PHP5 起本常量返回该函数被定义时的名字(区分大小写)。在PHP4 中该值总是小写字母的。
4。__CLASS__
返回类的名称(PHP4.3.0 新加)。自PHP5 起本常量返回该类被定义时的名字(区分大小写)。在PHP4 中该值总是小写字母的。
5。__METHOD__
返回类的方法名(PHP5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
魔术函数:
1。__construct()
构造函数: 实例化对象时被调用,
当__construct和以类名为函数名的构造函数同时存在时,__construct将被调用,另一个不被调用。
4。__get()
读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用__get函数。
5。__set()
设置一个对象的属性时,
若属性存在,则直接赋值;
若不存在,则会调用__set函数。
6。__toString()
打印一个对象的时被调用。如echo$obj;或print$obj;
7。__clone()
克隆对象时被调用。如:$t=newTest();$t1=clone $t;
8。__sleep()
serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。
9。__wakeup()
unserialize时被调用,做些对象的初始化工作。
10。__isset()
检测一个对象的属性是否存在时被调用。如:isset($c->name)。
11。__unset()
unset一个对象的属性时被调用。如:unset($c->name)。
12。__set_state()
调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。
13。__autoload()
实例化一个对象时,如果对应的类不存在,则该方法被调用。
初识魔术方法
Php5.0发布以来为我们提供了很多面向对象的特性,尤其是为我们提供了好多易用的魔术方法,这些魔术方法可以让我们简化我们的编码,更好的设计我们的系统。今天我们就来认识下php5.0给我们提供的魔术方法。
PHP| 魔术方法|__toString(),__clone(),__call(),__autoload() 详解
__toString()
如果我有一个类:
classPerson
{
private $name = “”;
private $age = 0;
function__construct($name = “”, $age = “”)
{
$this->name =$name;
$this->age = $age;
}
functionsay()
{
echo“name:”.$this->name.”
”.”age:”.$this->age.”
”;
}
}
现在我去实例化这个类,然后去打印这个实例:
$p1= new person(“liuzy”,20);
echo $p1; //直接打印会出错
显然这样直接打印对象是会出现错误的,因为对象是引用句柄,香港虚拟主机,不能直接打印。这时,我们可以用到__toString()方法。我们在Person类里加一个__toString()方法:
function__toString()
{
return “I am Person,my name is“.$this->name.”
”;
}
然后再刷新页面,发现什么了?
现在我们明白,__toString()是在直接打印对象时执行的方法,我们可以用该方法打印类的一些相关信息。注意:是两个下划线,方法必须有返回值。
__clone()
我们知道对象是可以直接赋值的,比如
$p2= $p1; //这里是一个对象有两个引用
那么我执行:
$p1->say();
$p2->say();
是都可以执行的,而且效果一样。
我们还有一种方法:
$p3= clone $p1; //注意clone是克隆关键字,这里与上面的不同是$p3是一个新的对象。
同时我们在类里加入一个方法:
function__clone()
{
$this->name = “我是副本”; //注意:这里的$this是克隆产生的对象本身,不是当前类
}
然后我们执行:
$p3->say();
打印出:
name:我是副本
age:20
到这里我们明白,__clone()方法是在克隆对象的时候执行的方法,香港服务器,它的作用是对新克隆出来的副本进行属性初始化等操作。
__call()
这个方法的主要功能是:在该类的实例调用一个不存在的方法时,执行该__call()方法。注意需要提前在类里声明:
function__call($fname,$argus)
{
echo “你调用的方法:”.$fname.”不存在
”;
echo“参数是”.print_r($argus);
}
__autoload()
我们在平时调用一个类的时候,必须要先将该类所在的文件引入(include“xxx.php”),如果我们在一个页里调用的类很多,那么我们不得不使用许多的include“xxx.php”。显然这样很麻烦。
__autoload()方法可以帮我们解决这个问题。
比如我们将上面的那个Person类所在的文件定义为Person_class.php ,
再新建一个php文件 test.php,编辑内容:
function __autoload($calssName)
{
include $className.”_class.php”; //看到这也许你就明白了吧?哈哈
}
$p= new Person(“mifan”, 22);
$p->say();
这样执行该test.php页面就不会出现错误了。
__autoload()方法是在生命不存在的类时调用的方法,它有一个string类型的参数是声明该不存在类的类名。
当然,类文件的命名也是很有讲究的。最好是和类有关系,比如Person_class.php

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

php5和php8的差異在效能、語言結構、型別系統、錯誤處理、非同步程式設計、標準函式庫函數和安全性等方面。詳細介紹:1、效能提升,PHP8相對於PHP5來說在效能方面有了巨大的提升,PHP8引入了JIT編譯器,可以對一些高頻執行的程式碼進行編譯和最佳化,從而提高運行速度;2、語言結構改進,PHP8引入了一些新的語言結構和功能,PHP8支援命名參數,允許開發者透過參數名稱而不是參數順序等等。

php5改80埠的方法:1.編輯Apache伺服器的設定檔中的連接埠號碼;2、輯PHP的設定檔以確保PHP在新連接埠上運作;3、重新啟動Apache伺服器,PHP應用程式將開始在新的連接埠上運行。

python元程式設計基礎Python元程式設計是動態地操作Python程式碼的能力,這使得Python成為一門非常強大的語言。元編程可以透過以下幾種方式實現:類別裝飾器:類別裝飾器是一種修改類別定義的裝飾器。它可以用來新增或修改類別的屬性和方法,也可以用來控制類別的實例化過程。 defadd_method_to_class(cls):defnew_method(self):print("Thisisanewmethod")setattr(cls,"new_method",new_method)returncls@a

php5沒有監聽9000埠解決方法步驟:1、檢查PHP-FPM設定檔;2、重啟PHP-FPM服務;3、關閉防火牆或設定埠轉送;4、檢查其他程序是否佔用9000埠。

PHP魔術方法的執行順序遵循以下規則:優先順序高的魔術方法優先執行。如果子類別和父類別都定義了同名的魔術方法,則優先執行子類別的魔術方法。如果一個類別既定義了一個常規方法,又定義了同名的魔術方法,則優先執行常規方法。

php7和php5語法區別有:1、PHP7引入了嚴格的類型聲明,而PHP5變量的類型是隱式的;2、PHP7引入了對標量類型聲明的支持,而PHP5並沒有;3、PHP7引入了NULL合併運算符,而PHP5檢查一個變數是否存在且不為null,需要使用條件語句;4、PHP7加入了新的比較運算子“<=>”,而PHP5並沒有;5、PHP7引入新特性匿名類,而PHP5並沒有。

什麼是魔術方法?如何在 Laravel 的應用?以下這篇文章跟大家介紹PHP 魔術方法在 Laravel應用的方法,希望對大家有幫助!

隨著網路科技的不斷發展,網站和應用程式的需求量越來越大,其中PHP作為一種Web開發的重要工具,逐漸被人們所熟知。在PHP中,我們常常會聽到一些關於「魔術常數」的說法,那麼什麼是PHP的魔術常數呢?魔術常數是一種預先定義的常數,它們的值在PHP腳本編譯時就已經確定了。魔術常數以兩個底線開頭和結尾,如LINE__、__FILE和CLA
