導航:首頁 > 編程語言 > php模式

php模式

發布時間:2022-01-12 09:24:59

Ⅰ 請問下php如何進入CLI模式

開始-運行-cmd-找到你的php.exe所在的目錄

比如我的php.exe所在的目錄就是E:wampinphpphp5.3.10

Ⅱ PHP模式、映射

1.這三種是面向對象的軟體設計模式,好像和具體的語言沒有關系吧
2.正確應該稱為「單例模式」,在整個應用系統范圍內只有一個實例對象,例子:
class Temple{
private static $ins;
private function __construct(){

}
public static function instance(){
if(Temple::$ins == null){
Temple::$ins = new Temple();
}
return Temple::$ins;
}
public function add($a,$b){
return $a + $b;
}
}
$tp = Temple::instance();
//$tp就是通過單例模式得到的對象,任何地方用到這個對象都是同一個
//解釋一下代碼吧
//構造函數使用的是private修飾,即私有,所以外部無法新建新對象,只能通過該類的類方法接觸
//$ins使用private+static修飾,private使得外部無法改變該屬性,static則保證在應用程序在用時
不會銷毀對象
//綜合instance()類方法,獲取到了Temp的實例對象,而該對象一經創建,在應用范圍內不會銷毀,即所有外部文件使用的都是同一個對象,這就是所謂的 單例模式
3.至於映射,沒用過,也講不清楚,具體用在哪裡不清楚 php的實現函數是
get_class_methods($classname) //獲取一個類的方法,返回方法名數組
get_class_vars($classname)//獲取一個類的屬性,返回屬性名數組

//就這些了,單例模式還是很清楚的,具體分數怎麼給,看你自己了

Ⅲ php有幾種開發模式php分幾個方面

PHP還能從事哪方面?你朋友也搞笑
不要把問題想的那麼復雜,
下面講的很詳細,大部分都用不到,只要熟悉OO模式跟MVC就好了

Ⅳ php有哪幾種運行模式

php一共分為五大運行模式:包括cgi 、fast-cgi、cli、isapi、apache 模塊的 DLLCGI
,經常接觸的應該是:apache 模塊的 DLLCGI,另外就是cli命令行模式

Ⅳ php插件模式如何實現

(1)建立一個數組,這個數組專門用於保存鉤子標識
* (2)建立一個函數,該函數可以把要執行的插件函數名稱放到鉤子上
* (3)建立一個函數,該函數可以執行鉤子上的所有插件函數以及可以傳入插件函數的參數
* (4)所謂的鉤子是什麼?這是一個很蛋疼的東西, 就是一個名稱而已,
* 這個名稱就用來做標識用的,就像人的姓名一樣,沒有什麼特別,你可以隨便起,但是執行的時候就要用它,
* 就好像你叫我去做事,就得叫我名字一樣
* (5)什麼是插件函數?把函數的名稱掛在上面所說的鉤子上面,然後執行的時候,只需把鉤子的函數名稱全部遍歷出來,並執行這些函數就可以實現插件的功能了
* (6)怎麼才能更加明白?把下面的代碼看懂,分解實現,自己一小步一小步的寫一遍。如果看不懂,想想為什麼?是有些系統函數卡住了,還是邏輯有問題

Ⅵ php中,什麼是單一模式優缺點

php單一入口模式可謂是現在一種比較流行的大型web應用開發模式,比如當前比較流行的一些php開發框架,zend,thinkphp,qeephp,還有cakephp
等他們都是採用的單一入口模式的。本文將就什麼是單一入口模式,單一入口模式有哪些優點以缺點做一下研究。
什麼是單一入口?
在解釋什麼是單一入口之前,先說說與之對應的多入口。多入口即通過訪問不同的 php 文件運行對應的功能。比如剛開始學習 php
的時候,我們做一個項目通常都會如下這樣做:
index.php - 網站首頁
list.php?page=5 - 內容列表頁
info.php?id=12 - 內容詳細頁
login.php - 用戶登錄頁
對於這個項目來說,這其實就是一個多入口。
那麼單一入口的應用程序就是說用一個文件處理所有的HTTP請求,例如不管是內容列表頁,用戶登錄頁還是內容詳細頁,都是通過從瀏覽器訪問 index.php
文件來進行處理的,這里這個 index.php 文件就是這個應用程序的單一入口。
php 是如何實現單一入口的呢?
很簡單,一般單一入口程序都是在訪問index.php時附帶一個特定的參數。例如:index.php?action=list 就可以定義為訪問內容列表頁,而
index.php?action=info 則可以定義為訪問內容詳細頁等,具體實現代碼如下:

//從url中取出action參數,如果沒有提供action參數,就設置一個默認的'index'作為參數
$action=$_GET['action']==''?'index':$_GET['action'];
//根據$action參數調用不同的代碼文件,從而滿足單一入口實現對應的不同的功能
include('files/'.$action.'.php');

以上這個就實現了一個最簡單的單一入口模式程序,當然真正的單一入口模式會比這個要復雜很多。但只要懂得如何合理組織各個功能的處理代碼並遵循一定的步驟,也可以輕松的解決掉這個難題,下面就一個後台的例子來做一下說明:
比如我們現在要做一個新聞管理的後台。那麼首先,對於應用程序的功能要做出一個合理的分解。例如後台的新聞欄目可能包含「添加新聞」、「編輯新聞」、「刪除新聞」等多個功能。這時我們就可以將這一組邏輯上關聯的功能組合到一個功能模塊中,稱為「新聞管理」模塊。
按照上面的方法整理完應用程序的功能,我們就會得到多個功能模塊,而每個模塊又是由多個功能組成(實際上,即便不是單一入口應用程序,功能的整理也是必須的步驟)。
整理完功能後,我們就需要確定如何存放各個功能的代碼。這里我推薦兩種方式:
1、每個功能模塊一個子目錄,目錄里的每一個文件就是一個功能的實現代碼。

種方式的好處是每個功能的代碼都互相隔離,非常便於多人協作。缺點是每個功能之間共享代碼和數據不那麼方便。例如新聞管理模塊中的所有功能都需要一個「取
出新聞欄目記錄」的功能,那麼採用這種多個獨立文件的組織方式,「取出新聞欄目記錄」就只能寫在另一個文件中,然後由需要該功能的文件include
進去。
2、每個模塊一個文件,模塊中的每個功能寫成一個函數或者一個類方法。
好處不用多說了,非常便於共享代碼和數據。缺點就是如果幾個人同時改,容易發生沖突。不過藉助版本控制軟體和差異比較合並工具,沖突還是很容易解決的。
單一入口應用程序對應多入口有哪些優勢呢?

一入口應用程序的所有http請求都是通過index.php接收並轉發到功能代碼中去的,所以在index.php裡面就能完成許多實際工作(所有頁面
都需要做的且都一樣的工作)。比如進行集中的安全性檢查,訪問統計等等,如果不是單一入口,那麼開發者就必須記得在每一個文件的開始加上安全性檢查代碼,
當然,你也許會說,多入口的安全性檢查可以寫到另一個文件中,然後include一下就可以了。但實際針對一個相對較大型一點的應用項目,在幾十個文件中
保持頭部的幾個include都一致可不是一件讓人省心的事。
與安全性檢查類似。在入口裡,我們還可以對url參數和post進行必要的檢查和特殊字元過濾、記錄日誌、訪問統計等等各種可以集中處理的任務。這樣就可以看出,由於這些工作都被集中到了index.php來完成,可以減輕我們維護其他功能代碼的難度。
單一入口應用程序的缺點?
任何事情都有兩面性,單一入口應用程序也不例外。由於所有http請求都是訪問 index.php ,所以程序的 url
看起來不那麼美觀,特別是對搜索引擎來說不太友好。比如下面這個 url:
http://www.phperhome.ocm/index.php?controller=posts&action=index
我們知道這種URl不太方便記憶,而且搜索引擎不認它是一個正常的 URL,當然是相比下面這種 URl 來說的:
http://www.phperhome.ocm/index.php/posts/index/
不過這個也不是什麼大問題,可以採用url重寫、PATHINFO等方式就可以輕松解決這個問題。
OK,單一入口模式就寫這么多了,當然要想深刻理解單一模式,最好的辦法還是自己嘗試著用單一入口模式寫一個小應用出來深刻體會一下。

本文地址:http://www.phperhome.com/php/400.html

Ⅶ PHP有哪幾種設計模式

PHP 一般有五種常見的設計模式

工廠模式

工廠模式 是一種類,它具有為您創建對象的某些方法。您可以使用工廠類創建對象,而不直接使用 new。這樣,如果您想要更改所創建的對象類型,只需更改該工廠即可。使用該工廠的所有代碼會自動更改。

例如:
<?php
interface IUser
{
function getName();
}

class User implements IUser
{
public function __construct( $id ) { }

public function getName()
{
return "Jack";
}
}

class UserFactory
{
public static function Create( $id )
{
return new User( $id );
}
}

$uo = UserFactory::Create( 1 );
echo( $uo->getName()."\n" );
?>

單元素模式

某些應用程序資源是獨占的,因為有且只有一個此類型的資源。例如,通過資料庫句柄到資料庫的連接是獨占的。您希望在應用程序中共享資料庫句柄,因為在保持連接打開或關閉時,它是一種開銷,在獲取單個頁面的過程中更是如此。

單元素模式可以滿足此要求。如果應用程序每次包含且僅包含一個對象,那麼這個對象就是一個單元素(Singleton)。

例如:
<?php
require_once("DB.php");

class DatabaseConnection
{
public static function get()
{
static $db = null;
if ( $db == null )
$db = new DatabaseConnection();
return $db;
}

private $_handle = null;

private function __construct()
{
$dsn = 'mysql://root:password@localhost/photos';
$this->_handle =& DB::Connect( $dsn, array() );
}

public function handle()
{
return $this->_handle;
}
}

print( "Handle = ".DatabaseConnection::get()->handle()."\n" );
print( "Handle = ".DatabaseConnection::get()->handle()."\n" );
?>

觀察者模式

觀察者模式為您提供了避免組件之間緊密耦合的另一種方法。該模式非常簡單:一個對象通過添加一個方法(該方法允許另一個對象,即觀察者 注冊自己)使本身變得可觀察。當可觀察的對象更改時,它會將消息發送到已注冊的觀察者。這些觀察者使用該信息執行的操作與可觀察的對象無關。結果是對象可以相互對話,而不必了解原因。

例如:
<?php
interface IObserver
{
function onChanged( $sender, $args );
}

interface IObservable
{
function addObserver( $observer );
}

class UserList implements IObservable
{
private $_observers = array();

public function addCustomer( $name )
{
foreach( $this->_observers as $obs )
$obs->onChanged( $this, $name );
}

public function addObserver( $observer )
{
$this->_observers []= $observer;
}
}

class UserListLogger implements IObserver
{
public function onChanged( $sender, $args )
{
echo( "'$args' added to user list\n" );
}
}

$ul = new UserList();
$ul->addObserver( new UserListLogger() );
$ul->addCustomer( "Jack" );
?>

命令鏈模式

命令鏈 模式以鬆散耦合主題為基礎,發送消息、命令和請求,或通過一組處理程序發送任意內容。每個處理程序都會自行判斷自己能否處理請求。如果可以,該請求被處理,進程停止。您可以為系統添加或移除處理程序,而不影響其他處理程序。

例如:
<?php
interface ICommand
{
function onCommand( $name, $args );
}

class CommandChain
{
private $_commands = array();

public function addCommand( $cmd )
{
$this->_commands []= $cmd;
}

public function runCommand( $name, $args )
{
foreach( $this->_commands as $cmd )
{
if ( $cmd->onCommand( $name, $args ) )
return;
}
}
}

class UserCommand implements ICommand
{
public function onCommand( $name, $args )
{
if ( $name != 'addUser' ) return false;
echo( "UserCommand handling 'addUser'\n" );
return true;
}
}

class MailCommand implements ICommand
{
public function onCommand( $name, $args )
{
if ( $name != 'mail' ) return false;
echo( "MailCommand handling 'mail'\n" );
return true;
}
}

$cc = new CommandChain();
$cc->addCommand( new UserCommand() );
$cc->addCommand( new MailCommand() );
$cc->runCommand( 'addUser', null );
$cc->runCommand( 'mail', null );
?>

策略模式

我們講述的最後一個設計模式是策略 模式。在此模式中,演算法是從復雜類提取的,因而可以方便地替換。例如,如果要更改搜索引擎中排列頁的方法,則策略模式是一個不錯的選擇。思考一下搜索引擎的幾個部分 —— 一部分遍歷頁面,一部分對每頁排列,另一部分基於排列的結果排序。在復雜的示例中,這些部分都在同一個類中。通過使用策略模式,您可將排列部分放入另一個類中,以便更改頁排列的方式,而不影響搜索引擎的其餘代碼。

例如:
<?php
interface IStrategy
{
function filter( $record );
}

class FindAfterStrategy implements IStrategy
{
private $_name;

public function __construct( $name )
{
$this->_name = $name;
}

public function filter( $record )
{
return strcmp( $this->_name, $record ) <= 0;
}
}

class RandomStrategy implements IStrategy
{
public function filter( $record )
{
return rand( 0, 1 ) >= 0.5;
}
}

class UserList
{
private $_list = array();

public function __construct( $names )
{
if ( $names != null )
{
foreach( $names as $name )
{
$this->_list []= $name;
}
}
}

public function add( $name )
{
$this->_list []= $name;
}

public function find( $filter )
{
$recs = array();
foreach( $this->_list as $user )
{
if ( $filter->filter( $user ) )
$recs []= $user;
}
return $recs;
}
}

$ul = new UserList( array( "Andy", "Jack", "Lori", "Megan" ) );
$f1 = $ul->find( new FindAfterStrategy( "J" ) );
print_r( $f1 );

$f2 = $ul->find( new RandomStrategy() );
print_r( $f2 );
?>

Ⅷ PHP中幾種常見的開發模式

單例模式

Ⅸ PHP的幾種運行模式

php一共分為五大運行模式:包括cgi 、fast-cgi、cli、isapi、apache 模塊的 DLLCGI
CGI即通用網關介面(Common Gateway Interface),它是一段程序,通俗的講CGI就象是一座橋,把網頁和WEB伺服器中的執行程序連接起來,它把HTML接收的指令傳遞給伺服器的執 行程序,再把伺服器執行程序的結果返還給HTML頁。CGI 的跨平台性能極佳,幾乎可以在任何操作系統上實現。
CGI方式在遇到連接請求(用戶 請求)先要創建cgi的子進程,激活一個CGI進程,然後處理請求,處理完後結束這個子進程。這就是fork-and-execute模式。所以用cgi 方式的伺服器有多少連接請求就會有多少cgi子進程,子進程反復載入是cgi性能低下的主要原因。都會當用戶請求數量非常多時,會大量擠占系統的資源如內 存,CPU時間等,造成效能低下。CGI-FCGI
fast-cgi 是cgi的升級版本,FastCGI像是一個常駐(long-live)型的CGI,它可以一直執行著,只要激活後,不會每次都要花費時間去fork一 次。PHP使用PHP-FPM(FastCGI Process Manager),全稱PHP FastCGI進程管理器進行管理。FastCGI的工作原理
1、Web Server啟動時載入FastCGI進程管理器(IIS ISAPI或Apache Mole)
2、FastCGI進程管理器自身初始化,啟動多個CGI解釋器進程(可見多個php-cgi)並等待來自Web Server的連接。
3、當客戶端請求到達Web Server時,FastCGI進程管理器選擇並連接到一個CGI解釋器。Web server將CGI環境變數和標准輸入發送到FastCGI子進程php-cgi。
4、 FastCGI子進程完成處理後將標准輸出和錯誤信息從同一連接返回Web Server。當FastCGI子進程關閉連接時,請求便告處理完成。FastCGI子進程接著等待並處理來自FastCGI進程管理器(運行在Web Server中)的下一個連接。 在CGI模式中,php-cgi在此便退出了。在上述情況中,你可以想像CGI通常有多慢。每一個Web 請求PHP都必須重新解析php.ini、重新載入全部擴展並重初始化全部數據結構。使用FastCGI,所有這些都只在進程啟動時發生一次。一個額外的 好處是,持續資料庫連接(Persistent database connection)可以工作。APACHE2HANDLER
PHP作為Apache模塊,Apache伺服器在系統啟動後,預先生成多個進程副本駐留在內存中,一旦有請求出 現,就立即使用這些空餘的子進程進行處理,這樣就不存在生成子進程造成的延遲了。這些伺服器副本在處理完一次HTTP請求之後並不立即退出,而是停留在計 算機中等待下次請求。對於客戶瀏覽器的請求反應更快,性能較高。
apache模塊的DLL:
該運行模式是我們以前在windows環境下使用apache伺服器經常使用的,而在模塊化(DLL)中,PHP是與Web伺服器一起啟動並運行的。(是apache在CGI的基礎上進行的一種擴展,加快PHP的運行效率)ISAPI:
ISAPI即Internet Server Application Program Interface,是微軟提供的一套面向Internet服務的API介面
一個ISAPI的DLL,可以在被用戶請求激活後長駐內存,等待用戶的另一個請求,還可以在一個DLL里設置多個用戶請求處理函數,此外,
ISAPI的DLL應用程序和WWW伺服器處於同一個進程中,效率要顯著高於CGI。(由於微軟的排他性,只能運行於windows環境)cli:
cli是php的命令行運行模式,大家經常會使用它,但是可能並沒有注意到(例如:我們在linux下經常使用 「php -m」查找PHP安裝了那些擴展就是PHP命令行運行模式;有興趣的同學可以輸入php -h去深入研究該運行模式)總結:
每種運行模式都有自己的優缺點,沒有絕對的好與壞,主要是看大家處理何種環境。

Ⅹ 請問php在apache下運行有幾種模式,區別是什麼該怎樣設置,謝謝

Windows 下有兩種方法使 PHP 工作於 Apache 2.0.x 之中。一種是 使用 CGI 可執行程序,另一種是適用 Apache 模塊的 DLL。不管哪種都需要編輯 httpd.conf 來配置 Apache 支持 PHP 並重新啟動伺服器。

注: 記住在 Windows 下給 Apache 的配置文件中加入路徑值的時候,所有的反斜線例如 c:\directory\file.ext 必須轉換成正斜線,如 c:/directory/file.ext。

以 CGI 方式安裝
需要將以下三行加入到 Apache 的 httpd.conf 配置文件中以設定 CGI: 例子 6-5. PHP 在 Apache 2.0 中的 CGI 方式

ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php

# 對 PHP 4 用這行
Action application/x-httpd-php "/php/php.exe"

# 對 PHP 5 用這行
Action application/x-httpd-php "/php/php-cgi.exe"

警告
如果使用 CGI 方式安裝,則伺服器對於某些可能的攻擊是開放的。請閱讀 CGI 安全一章以學習如何防禦這些攻擊。

以 Apache 模塊方式安裝
需要將以下兩行加入到 Apache 的 httpd.conf 配置文件中以設定 Apache 2.0 的 PHP 模塊: 例子 6-6. PHP 在 Apache 2.0 中的模塊方式

# 對 PHP 4 用這兩行:
LoadMole php4_mole "c:/php/php4apache2.dll"
# 別忘了從 sapi 目錄中把 php4apache2.dll 拷貝出來!
AddType application/x-httpd-php .php

# 對 PHP 5 用這兩行:
LoadMole php5_mole "c:/php/php5apache2.dll"
AddType application/x-httpd-php .php

# 配置 php.ini 的路徑
PHPIniDir "C:/php"

注: 記得用自己 PHP 實際所在的路徑替換掉上例中的 c:/php/。要留意在 LoadMole 指令中用的是 php4apache2.dll 或 php5apache2.dll,而不是 php4apache.dll 或 php5apache.dll,後者是設計用於 Apache 1.3.x 的。

注: 如果要使用內容協商機制,請閱讀有關 FAQ。

警告
不要在安裝中混合使用來自不同 PHP 版本的 DLL。使用下載回來的 PHP 版本中所提供的 DLL 和擴展庫是唯一選擇。

閱讀全文

與php模式相關的資料

熱點內容
精品php源碼 瀏覽:960
自己編寫雲伺服器搶紅包 瀏覽:203
java解壓縮文件加密 瀏覽:887
dlink列印伺服器默認地址 瀏覽:353
php休眠函數 瀏覽:372
金蝶如何打開伺服器 瀏覽:766
e4a手游輔助源碼 瀏覽:777
什麼app可以實時直播 瀏覽:106
蘋果13的app閃退什麼原因 瀏覽:775
尾盤選股源碼公式 瀏覽:450
php日期運算 瀏覽:931
天龍八部長歌伺服器什麼時候開的 瀏覽:199
鬼泣4模型在那個文件夾 瀏覽:229
單片機的串列口 瀏覽:58
phpjson轉化為數組 瀏覽:268
pdf導入excel 瀏覽:428
蘋果xsmax信任app在哪裡設置 瀏覽:53
自動外鏈php源碼 瀏覽:245
我的世界新手獎勵箱命令 瀏覽:146
linux更新vim 瀏覽:998