php指南
❶ php開發實戰權威指南的作者簡介
張恩民,知名Web培訓講師,PHP高級講師、DBA培訓講師、PHP100視頻教程創始人,上海創恩IT教育教學總監、PHP100中文網CEO、6年高端培訓和教學經驗,曾在各大高校和阿里巴巴技術峰會做過多次公開課和演講,在業界有較高的知名度。
❷ 零基礎,想學習PHP,應該先學習什麼
因為PHP目前主要做網路應用。也就是網站等。
所以最好了解一些HTML,CSS
他們是你做成網頁的臉面,也是最接近用戶的部分,所以必要的了解還是要有的。
開始時也不需學的很精通。在你PHP學習的過程中不斷的接觸它們,再進行鞏固和擴展。
其他的包括資料庫,數據結構,JavaScript等等都可以在你開始學習PHP之後逐步接觸。
❸ 求推薦一本十分容易懂的PHP入門書籍
推介看兄弟連軟體學院院長高洛峰老師寫的《細說PHP》好像已經出到第三版了吧,有空去看看
❹ 想學習PHP,能不能給介紹一本入門級的書啊
建議下載一個php基礎手冊吧
【內容簡介】
《PHP程序設計(第二版)》是關於PHP5的權威指南書籍,書中包含了PHP創始人 (Rasmus Lerdorf)和其他PHP專家的獨特見解。
PHP是一種簡單而強大的開源腳本語言,用於創建動態 Web內容。全球數百萬運行著PHP程序的站點證明了它的流行程度和易用性。程序員和Web設計師都喜歡PHP,前者喜歡PHP的靈活性和速度,後者則喜歡它的易用和方便。
作為PHP的行業標准書籍,本書中所有的技術要點(如語法和編程技巧)都用簡潔的文字和表達方式來闡述,並附帶有正確用法及習慣用法的代碼示例。本書還包含了代碼風格技巧和實際開發方面的建議。這些不僅會幫助你成為一名PHP程序員,而且會幫助你成為一名優秀的PHP程序員。《PHP程序設計(第二版)》涵蓋了使用PHP創建高效Web站點你所需要知道的一切,其內容包括:
①PHP語言基礎,包括數據類型、變數、操作符和流控制語句
② 函數、字元串處理、數組和對象
③ 基本的PHP Web開發技術,如表單處理和驗證,session跟蹤和cookie。
④ 與關系型資料庫,如MySQL和Oracle的結合應用,使用獨立的資料庫抽象層 PEAR::DB庫和PHP5中新的PDO擴展庫
⑤ 生成動態的圖像文件,創建PDF文件,使用PHP解析XML文件
⑥高級主題,例如創建安全的腳本、錯誤處理、性能調節和開發你自己C語言擴展庫
⑦ PHP中所有核心函數和標准擴展的快速參考
❺ PHP指南書籍的官網源碼全是英文不知如何下載
PHP4快要停止支持了,朋友,還買PHP4的指南干什麼?
其實網上的資源也很多,何必要買書呢,不說先看一下,了解一下大概,等以後有合適的再買不遲。
我發現有個站點的教程還是滿多的,都中文的教程,容易看懂。
這個站點是:http://www.phpli.com
另外PHP中國也是個不錯的選擇,有不懂的問題還可以到那裡去交流。
PHP中國: http://bbs.phpchina.com
❻ PHP開發指南如何實現理解依賴注入容器
。我認為有一部分原因是由於大多數介紹依賴注入的例子缺乏實際意義,讓人難理解。因為PHP主要用於Web開發,那就先來看一個簡單的web開發實例。
HTTP本身是一個無狀態的連接協議,為了支持客戶在發起WEB請求時應用程序能存儲用戶信息,我們就需要通過一種技術來實現存儲狀態交互。理所當然最簡單的是使用cookie,更好的方式是PHP內置的Session機制。
$_SESSION['language'] = 'fr';
1
上面代碼將用戶語言存儲在了名為language的Session變數中,因此在該用戶隨後的請求中,可以通過全局數組$_SESSION來獲取language:
$user_language = $_SESSION['language'];
1
依賴注入主要用於面向對像開發,現在讓我們假設我們有一個SessionStorage類,該類封裝了PHP Session機制:
class SessionStorage
{
function __construct($cookieName = 'PHP_SESS_ID')
{
session_name($cookieName);
session_start();
}
function set($key, $value)
{
$_SESSION[$key] = $value;
}
function get($key)
{
return $_SESSION[$key];
}
// ...
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
同時還有一個User類提供了更高級的封裝:
class User
{
protected $storage;
function __construct()
{
$this->storage = new SessionStorage();
}
function setLanguage($language)
{
$this->storage->set('language', $language);
}
function getLanguage()
{
return $this->storage->get('language');
}
// ...
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
代碼很簡單,同樣使用User類也很簡單:
$user = new User();
$user->setLanguage('fr');
$user_language = $user->getLanguage();
1
2
3
一切都很美好,除非你的程序需要更好的擴展性。假設現在你想要更改保存session_id的COOKIE鍵值,以下有一些可供選擇的方法:
User類中創建SessionStorage實例時,在SessionStorage構造方法中使用字元串』SESSION_ID』硬編碼:
class User
{
function __construct()
{
$this->storage = new SessionStorage('SESSION_ID');
}
// ...
}
1
2
3
4
5
6
7
8
在User類外部設置一個常量(名為STORAGE_SESSION_NAME)
class User
{
function __construct()
{
$this->storage = new SessionStorage(STORAGE_SESSION_NAME);
}
// ...
}
define('STORAGE_SESSION_NAME', 'SESSION_ID');
1
2
3
4
5
6
7
8
9
10
通過User類構造函數中的參數傳遞Session name
class User
{
function __construct($sessionName)
{
$this->storage = new SessionStorage($sessionName);
}
// ...
}
$user = new User('SESSION_ID');
1
2
3
4
5
6
7
8
9
10
11
還是通過User類構造函數中的參數傳遞Session name,不過這次參數採用數組的方式
class User
{
function __construct($storageOptions)
{
$this->storage = new SessionStorage($storageOptions['session_name']);
}
// ...
}
$user = new User(array('session_name' => 'SESSION_ID'));
1
2
3
4
5
6
7
8
9
10
上面的方式都很糟糕。
在user類中硬編碼設置session name的做法沒有真正解決問題,如果以後你還需要更改保存session_id的COOKIE鍵值,你不得不再一次修改user類(User類不應該關心COOKIE鍵值)。
使用常量的方式同樣很糟,造成User類依賴於一個常量設置。
通過User類構造函數的參數或數組來傳遞session name相對來說好一些,不過也不完美,這樣做干擾了User類構造函數的參數,因為如何存儲Session並不是User類需要關心的,User類不應該和它們扯上關聯。
另外,還有一個問題不太好解決:我們如何改變SessionStorage類。這種應用場景很多,比如你要用一個Session模擬類來做測試,或者你要將Session存儲在資料庫或者內存中。目前這種實現方式,在不改變User類的情況下,很難做到這點。
現在,讓我們來使用依賴注入。回憶一下,之前我們是在User類內部創建SessionStorage對像的,現在我們修改一下,讓SessionStorage對像通過User類的構造函數傳遞進去。
class User
{
function __construct($storage)
{
$this->storage = $storage;
}
// ...
}
1
2
3
4
5
6
7
8
9
這就是依賴注入最經典的案例,沒有之一。現在使用User類有一些小小的改變,首先你需要創建SessionStorage對像。
$storage = new SessionStorage('SESSION_ID');
$user = new User($storage);
1
2
現在,配置session存儲對像很簡單了,同樣如果改變session存儲對像也很簡單,所有這一切並不需要去更新User類,降低了業務類之間的耦合。
Pico Container 的網站上是這樣描述依賴注入:
依賴注入是通過類的構造函數、方法、或者直接寫入的方式,將所依賴的組件傳遞給類的方式。
所以依賴注入並不只限於通過構造函數注入。下面來看看幾種注入方式:
構造函數注入
class User
{
function __construct($storage)
{
$this->storage = $storage;
}
// ...
}
1
2
3
4
5
6
7
8
9
setter方法注入
class User
{
function setSessionStorage($storage)
{
$this->storage = $storage;
}
// ...
}
1
2
3
4
5
6
7
8
9
屬性直接注入
class User
{
public $sessionStorage;
}
$user->sessionStorage = $storage;
1
2
3
4
5
6
根據經驗,一般通過構造函數注入的是強依賴關系的組件,setter方式用來注入可選的依賴組件。
現在,大多數流行的PHP框架都採用了依賴注入的模式實現業務組件間的高內聚低耦合。
// symfony: 構造函數注入的例子
$dispatcher = new sfEventDispatcher();
$storage = new sfMySQLSessionStorage(array('database' => 'session', 'db_table' => 'session'));
$user = new sfUser($dispatcher, $storage, array('default_culture' => 'en'));
// Zend Framework: setter方式注入的例子
$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', array(
'auth' => 'login',
'username' => 'foo',
'password' => 'bar',
'ssl' => 'ssl',
'port' => 465,
));
$mailer = new Zend_Mail();
$mailer->setDefaultTransport($transport);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
如果對依賴注入有興趣,強烈推薦你看《Martin Fowler introction》或者著名的《Jeff More presentation》
這就是本章的全部內容,希望對大家在理解依賴注入上有所幫助。在該系列後面的內容中,我們將討論依賴注入的容器實現。
❼ 怎麼提高php編程能力
要想提高你的PHP編程能力,你可以做兩件事情:1)更扎實的掌握基本編程技能;2)更細微、更深入地了解PHP。
以下總結出的幾條指南導航將有助於提高開發者的PHP編程能力:
一、提高PHP編碼能力的10個細節
或許你並不能從這些細節中學到絕對新的東西(例如「如何對變數和函數做好的命名」,「對代碼做好注釋」,「頻繁測試代碼」),而它們可以讓你鞏固基礎知識。以下幾點解釋了為什麼最好的普通編程實踐在PHP應用軟體開發中尤為重要。
其中10點建議分別為:
1)如何開始良好的開發風格;
2)合適的變數及函數命名;
3)注釋代碼;
4)自己動手做大部分的工作;
5)多方涉獵;
6)了解開發語言的局限性;
7)接受結構上的意見反饋;
8)頻繁的測試代碼;
9)在自己的工程上內嵌程序;
10)不要把每一個文件都分一個文件夾
二、寫出更優PHP代碼的7條法則
以下7種方法列舉出了PHP開發商極有可能面對的問題(例如不使用模板,不合適的封裝,在增刪修改時PHP和SQL的混淆使用等等),對於那些很有可能危害到PHP應用程序運行的各種復雜語句,該指南也提供了多種方法來清除(例如對大容量的網頁減少資料庫查詢)。
以下是關鍵點:
1)在模板中使用可選擇的PHP語法;
2)封裝所有的東西;
3)使用一個資料庫對象;
4)使用增刪查改功能;
5)與調試為友;
6)重視命名;
7)減少資料庫查詢。