我應該包含/ require_once我在PHP中擴展的父類嗎?在PHP中擴展父類是否需要包含該類的文件?
例如我曾稱爲類形狀
class Shapes {
}
然後,我創建了一個名爲
require_once('shapes.php');
class Circle extends Shapes {
}
如果我需要的時候,我擴展父類的子類?或者應該只是使用將子類擴展到它的父類,即使它們在同一個文件夾中?
我應該包含/ require_once我在PHP中擴展的父類嗎?在PHP中擴展父類是否需要包含該類的文件?
例如我曾稱爲類形狀
class Shapes {
}
然後,我創建了一個名爲
require_once('shapes.php');
class Circle extends Shapes {
}
如果我需要的時候,我擴展父類的子類?或者應該只是使用將子類擴展到它的父類,即使它們在同一個文件夾中?
您需要做某事爲了讓PHP在處理子類之前看到您的基類定義,否則會發生致命錯誤。
這個東西可以是基類文件的手冊require_once
或autoloading(還有其他選項用於自動加載,但spl_autoload_register
是您應該使用的選項)。
該方法的使用取決於範圍:編碼一個小的測試項目設置自動加載的時候可能是矯枉過正。但是,隨着代碼庫變大,自動加載變得更有吸引力,因爲:
是的,你有和平共存的獨立的自動加載磁帶機如果該類未在同一文件中聲明,則將其包含在內。
也有一個叫做Autoloading Classes功能,使用它可以創建這樣一個功能:
function __autoload($class){
require_once('classes/' . $class . '.php');
}
,它會自動包括未在現有範圍內發現
而且你班可以讀到這個功能太:autoload_register
您還可以使用作曲家簡化程序。
讓composer.json
像https://getcomposer.org/這
{
...
"autoload": {
"psr-4": {
"": "src/"
}
},
...
}
獲取作曲家和運行composer install
。 您應該加載一次作曲家的自動加載腳本像
require_once __DIR__ . '/vendor/autoload.php';
如果你有PHP小於5.3.0然後用dirname(__FILE__)
替換__DIR__
。
並把您的文件夾src
。例如,如果您有類Acme\Utils\FooBar
那麼它應該在src/Acme/Utils/FooBar.php
。
你看過自動加載嗎? http://www.php.net/manual/en/language.oop5.autoload.php –