PHP????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????
1.??????????????????????????????????????????????????????????????????XML????
2.??????????????????????????????????????????????????
3.??????????????????????????
????????????????????????????????????
1.??????????????????????????????????????
2.????????????????????????????
????????????????????????????????
1.??????????????
2.??????????????
3.????????????
4.????????????????????
5.????????
????????????????????????????
1.??????????????????
2.????????????
3.????????
4.????????
??????????
<?php /** * PluginManager Class * * ???????????????????? * * @link http://www.bkjia.com/ */ class PluginManager { /** * ???????????????? * * @access private * @var array */ private $_listeners = array(); /** * ???????? * * @access public * @return void */ public function __construct() { #????$plugin???????????????????????????????????????? #????????????????????$plugin?????????? #$plugin = array( # 'name' => '????????', # 'directory'=>'????????????' #); // $plugins = get_active_plugins();#?????????????????? //???????????????????????????????? $plugins=array(array("directory"=>"demo", "name"=>"DEMO")); if($plugins) { foreach($plugins as $plugin) {//????????????????????????????actions.php???????????????????????? if (@file_exists(STPATH .'plugins/'.$plugin['directory'].'/actions.php')) { include_once(STPATH .'plugins/'.$plugin['directory'].'/actions.php'); $class = $plugin['name'].'_actions'; if (class_exists($class)) { //?????????????? //$this ???????????? new $class($this); } } } } #?????????????????????????? } /** * ?????????????????????????????? * * @param string $hook * @param object $reference * @param string $method */ function register($hook, &$reference, $method) { //???????????????????? $key = get_class($reference).'->'.$method; //????????????????????push???????????? $this->_listeners[$hook][$key] = array(&$reference, $method); #?????????????????????????? } /** * ???????????? * * @param string $hook ?????????? * @param mixed $data ?????????? * @return mixed */ function trigger($hook, $data='') { $result = ''; //???????????????????????????????????? if (isset($this->_listeners[$hook]) && is_array($this->_listeners[$hook]) && count($this->_listeners[$hook]) > 0) { // ???????????? foreach ($this->_listeners[$hook] as $listener) { // ???????????????????????? $class =& $listener[0]; $method = $listener[1]; if(method_exists($class,$method)) { // ?????????????????? $result .= $class->$method($data); } } } #?????????????????????????? return $result; } } define(STPATH, "./"); $pluginManager=new PluginManager(); $pluginManager->trigger("demo");
demo????????:
<?php /** * ????????Hello World?????????????? * * @link http://www.bkjia.com/ */ /** *???????????????????????? * 1. ??????????????????????action * 2. ??????????????????{??????_actions} */ class DEMO_actions { //????????????????pluginManager?????? function __construct(&$pluginManager) { //???????????? //?????????????????????? //????????????pluginManager?????? //???????????????????????? $pluginManager->register('demo', $this, 'say_hello'); } function say_hello() { echo 'Hello World'; } }
php 是一種服務器端的,嵌入html的腳本語言。php區別其他像客戶端java的地方是它的代碼在服務器端執行.php能做什麼?
最低水平,php可以做任何其他cgi程序所能做的事,例如收集表格數據,生成動態頁面內容,或者收發cookies.可能最強大,最有意義的特性是php支持大范圍的數據庫.書寫一個支持數據庫的web 頁面是難以置信的簡單.
下面是當前支持的數據庫:
adabas d interbase solid
dbase msql sybase
empress mysql velocis
filepro oracle unix dbm
informix postgresql
php通過協議也支持與其他服務的"交談",像imap, snmp, nntp, pop3, 甚至是 http. 你也可以打開晦澀的 網絡接口和其他協議交互.
php的簡要歷史
1994年秋季, rasmus lerdorf 開始構思 php. 早期的非發行版本被用在他的主頁上,以追蹤誰在看他的在線簡歷. 1995年年初第一版本出台,當時php只被認為是個人主頁開發工具.它由一個非常單純的只能理解很少數特殊宏的分析引擎和 一些用在主頁後端通用的工具組成.如留言簿,計數器和其他一些東西.這個分析器在1995年年中被重寫並被命名為 php/fi 第二版. fi來自 rasmus 寫的另外一個包, 用於解釋 html 形式的數據.他結合了個人主頁工具腳本和形式解析器,並加 上msql支持.這樣就產生 php/fi 了. php/fi以令人驚奇的步調成長,人們開始把自己的代碼貢獻給它.
很難給出它的硬統計表,但可以估計在1996年末,整個世界至少有15,000個網站在用php/fi.到1997年年中,這個 數字已經超過50,000了. 而在此時php的發展也發生了變化.由rasmus自己偏愛的和幾個人開發的項目變成一個更有組織的團 體成就.ev suraski和andi gutmans重寫了解析器.這個新的解析器成為php版本3的基礎.許多有用的代碼從php/fi 繼承到php3,並且很多是完全重寫的.
今天(1999年年中)不管是php/fi或php3與很多商業產品捆綁在一塊,例如c2級強度的web服務器和紅帽子linux. 根據netcraft提供的數據推斷,保守估計全世界應用php的網站已超過150,000個.由此看來,它比在因特網上運行netscape 的旗艦企業服務器的站點還多.
1.php是網頁文件.需要有支持php的web服務器,才能通過浏覽器打開.如果你實在要打開,用記事本也可以打開,不過裡面是些網頁代碼.你不一定讀得懂 .
2.你所下載的只不過是一個指向(或包含)那個手機鈴聲的網頁,你要真正得到那個鈴聲的地址才能下載它 .
3.應該不是php,是pdf,你把後綴改一下,php文件是網頁格式,用文本編輯器打開,但是本站提供的大部分是pdf格式的,安裝一個pdf閱讀器就能正常打開了.
4.“把擴展名改成 html ,然後用IE打開。”
5.如果安裝了dreamwaver,php文件會顯示dreamwaver可以打開的樣式
不過用不著
到你下載過的貼子裡,看你下載的那個東西的擴展名是什麼,比如word文檔後面就是.doc, pdf文檔後面就是.pdf, 壓縮文檔後面就是.rar或 .zip之類的
然後把擴展名替換.php......余下全文>>
你下載的是一個類似於asp的鏈接文件,而不是你原本的文件!
需要在服務器端執行後才能到達正確的下載地址,所以最好點擊進入網頁獲得正確的下載地址例如後綴類似於rar的,再使用下載地址,如果不能獲取,就可能是服務器出了問題。無法訪問了
PHP是一種服務器端HTML-嵌入式腳本描述語言。 其最強大和最重要的特征是其數據庫集成層,使用它完成一個含有數據庫功能的網頁是不可置信的簡單。在HTML文件中, PHP腳本程序(語法類似於Perl或者c語言)可以使用特別的PHP標簽進行引用, 這樣網頁制作者也不必完全依賴HTML生成網頁了。由於PHP是在服務器端執行的, 客戶端是看不到PHP代碼的。 PHP可以完成任何CGI腳本可以完成的任務,但它的功能的發揮取決於它和各種數據庫的兼容性。 PHP除了可以使用HTTP進行通信,也可以使用IMAP, SNMP, NNTP, POP3協議。