簡體   English   中英

PHP OOP-自動初始化對象

[英]PHP OOP - Autoinitiate objects

<?php function __autoload($class_name)
{
  include_once 'inc/classes/class.' . $class_name . '.inc.php';
}


?>

現在,我在使用__autoload時自動使用了我的類。 但是我在想,為什么不也自動自動啟動對象,所以您不必在頁面本身中啟動對象,您可以僅調用類的屬性而無需啟動對象。

但是在這里我被困住了,我以為我可以像下面的例子那樣做,但是它不起作用,對象沒有啟動。

<?php
function __autoload($class_name)
{
  include_once 'inc/classes/class.' . $class_name . '.inc.php';
  '$'.$class_name = new $class_name;
 }


 ?>

嘗試這個:

$$class_name = new $class_name();

這根本不符合邏輯。 就像您說的那樣,在引用該類時會發生自動加載。

如何引用? 讓我們來看看:

  1. 使用$object = new TheClassName() -您已經有了實例。 為什么要自動創建另一個?
  2. 通過靜態方法調用,可以訪問靜態屬性或常量TheClassName::I_NEED_THIS_CONSTANT如果訪問靜態方法/屬性/常量,為什么需要一個自動創建的實例?
  3. 通過對class_exists()調用-如果我只想檢查類是否存在,為什么需要一個自動創建的實例?

您也可以嘗試使用{}。 在您的示例中,它將是:

${$class_name} = new $class_name;

使用$ {},您可以創建如下的動態變量:

$i = '1';
${'tmp' . $i} = 'Hello world';
echo $tmp1; // Hello world

您還應該使用spl_autoload_register而不是__autoload(因為將來可能不推薦使用或刪除它)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM