[英]Design pattern and OOP in PHP?
我一直在使用PHP和更多的OOP語言,並且仍然想知道PHP和類似語言中的設計模式和OOP的含義。
我的項目中有一些模塊:新聞,論壇......每個模塊都可以通過調用它來訪問主類。
每個模塊中的子類處理這些特定的功能/頁面。
這個型號的最佳設計模式是什么? 創建類的實例或它的孩子?
現在,我初始化一個類,並訪問子類靜態方法,如下面的示例。 但我讀過使用靜態方法可以減慢代碼?
class news {
__construct() {
// define module settings
...
// routing all module pages
categories::list();
}
function modulesetting() {}
}
class categories extends news {
static function list() {}
}
只是為了表明我的意思(放輕松):
文件夾結構:
/index.php
/autoload.php
/IModule.php
/IPage.php
/BaseModule.php
/modules/
/modules/News.php
/modules/News/
/modules/News/Categories.php
/modules/News/Acticle.php
...
的index.php
require_once('./autoload.php');
// based on request select which module to use
$moduleName = 'News';
$page = ('module\\'.$moduleName)::route();
$page->render();
autoload.php
function __autoload($classname) {
$filename = __DIR__ . '/'. $classname . '.php';
include_once($filename);
}
IModule.php
interface IModule {
public static function route();
//protected function moduleSettings();
}
IPage.php
interface IPage {
public function render();
}
BaseModule.php
abstract class BaseModule implements \IModule {
// fundamental stuff
}
News.php
namespace modules;
class News extends \BaseModule {
protected $someProperty;
__construct() {
// define module settings
}
public static function route(){
// routing all module pages, based on request
$page = 'modules\News\Categories';
return new $page;
}
protected function moduleSettings(){ ... }
}
Categories.php
namespace modules\News;
class Categories extends \module\News implements \IPage {
public function render() {
/* access to module news */
$this->someProperty;
$this->moduleSettings(); /* or if method moduleSettings is overwriten then */ parent::moduleSettings();
/* for example */
echo '<html></html>';
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.