當前位置:首頁 » 編程語言 » php父類獲取子類

php父類獲取子類

發布時間: 2023-05-29 07:21:21

php獲取類名的一個問題(基類獲取子類名)

從父類中獲得子類名稱,並不是不可能,
但是,這樣做嚴重違背設計原則,屬於設計錯誤。設計上不及格。。
應該檢討自己的需求和模型設計。

把具體應用情況說一說,我看看哪裡做扭曲了

㈡ PHP中父類里調用子類的方法

無解,除非是靜態public方法,function前加static,可以testB::demo2()這樣調用
子類重寫之後的方法父類沒法調用,換句話說,父類咋知道自己會被哪個子類繼承呢,就算你強轉虛表也不一樣,無解的問題
而且父類咋需要調用子類的方法呢,就算你以後實踐中有這樣的需求,也只能說明你設計上不合理

㈢ php怎麼獲取分類下所有子類

這是php靜態數據過早綁定的問題(即子類衡緩的all方法是從父類中繼承過來的,__CLASS__常量過早的綁定成了父類名),解決這個問題:方叢拍法一:class all{ function all() { return __CLASS__; }} class my extends all{ function all() { return __CLASS__; }}//子類定義同名的方法(這其實就是覆蓋了父類的方法,讓__CLASS__綁定為自己的類名)echo my::all();
方法二:class all{ function all() { return get_class($this); }} class my extends all{}$my = new my();//非靜態調用是不存在過早綁定的情況的。echo $my->all();
這個可以看看php5.3.0版本之後的靜態遲綁定滲攔羨相關信息(static關鍵字)

㈣ php如何獲取父類下所有子類Id

今天做項目時遇到php如何獲取父類下所有子類Id??,把代碼分享給大家。


復制代碼代碼如下:
functiongetChildrenIds($sort_id)
{
$db=$this->loadDB();
$ids='';
$sql="SELECT*FROMt_deptWHERE`parent_id`='{$sort_id}'";
$query=$db->query($sql);
$result=$query->result_array();

if($result)
{
foreach($resultas$key=>$val)
{
$ids.=','.$val['id'];
$ids.=$this->getChildrenIds($val['id']);
}
}
return$ids;
}

㈤ php 如何在父類訪問子類的屬性

可以

用$this就可以了。

靜態的屬性直接用類名訪問

㈥ php 知道父類id查找所有子類id,怎麼寫。

functiongetAllIds($id)
{
$res=mysql_query("select*from`表名`wherefather_id='$id'");
while($row=mysql_fetch_array($res,MYSQL_ASSOC))
{
print_r($row);
getAllIds($row['class_id']);
}
}

㈦ php父類如何調用子類的靜態方法或變數

php父類中怎麼調用子類的的靜態屬性了,Oh,my god,如果被面試官問道這種問題,你一定會說shit,fucky question。你會說我很少這么做,況且php對於靜態的操作太隨意了,php在父類調用子類的靜態屬性是一件麻煩的事情。我們知道子類中調用父類的靜態屬性,可以用self::的形式。但是父類調用子類如果用self::就只能調用到父類的靜態屬性。那麼,怎麼辦了?php是不是無法做到了?答案當然是否定的,php中還可以使用在父類中用子類的類名來調用的方法。
不過,這當中仍然存在一個問題,就是如果我有多個類繼承了同一個父類,而且父類的某個函數要用到各個子類的靜態屬性的話,就想當trouble了。這里有個php的朋友提供了一種思路,採用在子類中重載父類的方法使父類得到靜態屬性。父類中使用了get_class函數得到類名,get_class()是父類名,get_class($this)是子類名。好了得到這個再用eval函數做下執行語句就OK啦。例子:
//父類class A {
public function __con(){
//這里主要為讓大家看清楚,所以列印出來類名,供大家學習
echo(get_class($this)).'/';
echo(get_class()).'/';
eval(\$ab = . get_class($this) . ::\$table;);echo $ab;}}//子類Bclass B extends A {
static $table = 'b table';
function __construct(){
$this-__con();}}//子類Cclass C extends A{
static $table = 'c table';
function cc(){
$this-__con();}}//調用
new B; //輸出結果 B A b table
$c = new C;
上面就是php父類調用子類靜態成員的方法,在子類重載父類的方法還是相當不錯的 ,當時聽朋友提起這個時,就異常激動。父類我們也叫做基類,或者底層類。一般都是最先設計,子類就是根據各個需要來設計,所以我們子類修改的可能性比較大,操作靈活性也比較大。

㈧ php 知道父類id查找所有子類id,怎麼寫。

functiongetAllIds($id)
{
$res=mysql_query("者配select*from`表名`wherefather_id='$id'");
while($row=緩瞎mysql_fetch_array($res,MYSQL_ASSOC))
{
首哪指print_r($row);
getAllIds($row['class_id']);
}
}

㈨ php 父類為什麼能調用子類的屬性

在集成的時候父類的屬性會被保護。如果想要調用父類的屬性必須使用父類對象super去調用,不然訪問不了。你在子類中沒有X的屬性,所以在調用時使用this或super調用屬性,這個時候不論是this還是super調用的都是父類的X屬性。

熱點內容
手游喊話腳本 發布:2024-10-07 03:53:53 瀏覽:232
maven3編譯jdk6項目 發布:2024-10-07 03:19:57 瀏覽:44
緩存的視頻無法剪輯 發布:2024-10-07 03:19:40 瀏覽:89
解壓工具RAR 發布:2024-10-07 02:42:49 瀏覽:353
蘋果網盤解壓 發布:2024-10-07 02:42:49 瀏覽:160
為什麼安卓蘋果手游不互通 發布:2024-10-07 02:31:28 瀏覽:280
如何刪除手機中的游戲緩存 發布:2024-10-07 02:11:28 瀏覽:874
解鎖資料庫用戶 發布:2024-10-07 01:55:54 瀏覽:828
關系資料庫的關鍵字是指 發布:2024-10-07 01:55:54 瀏覽:518
java資料庫date 發布:2024-10-07 01:55:21 瀏覽:459