PHP是一種被廣泛應(yīng)用于Web開發(fā)領(lǐng)域的編程語言,它的開源性質(zhì)使得人們可以自由地使用、修改、分發(fā)甚至銷售它的源碼。在開源的前提下,PHP有著自己的license(許可證)來規(guī)范代碼的使用,它體現(xiàn)了PHP開發(fā)團隊的精神和開發(fā)理念。
PHP license分為兩種,GPL和BSD。GPL全稱為GNU General Public License,是自由軟件基金會(FSF)所定義的一種許可協(xié)議,即遵循GPL協(xié)議的軟件可以自由分發(fā)、使用、修改、甚至借鑒他人使用的代碼,但必須要求其源碼也同樣遵照GPL協(xié)議開放源代碼。JBoss、Linux、Apache等軟件都采用了GPL協(xié)議。
BSD license則是一種比GPL限制更少的許可協(xié)議。其特點是:允許出售盈利,無需在其他軟件中使用作者的名字,不需要強制公開源代碼。簡單來說,BSD協(xié)議下的代碼更加靈活,不會受到過多的束縛。但是這種自由的背后,也意味著可能無法控制代碼的流通和濫用。NGINX、SQLite等軟件都采用了BSD協(xié)議。
// 以GPL協(xié)議為例,下面是一份開源的PHP代碼
// 這份代碼必須在遵循GPL協(xié)議的前提下使用
/**
* mySQL操作類
*/
class MySQL {
public function __construct() {
// 構(gòu)造函數(shù)代碼
}
public function query($sql) {
// SQL查詢函數(shù)代碼
}
}
$db = new MySQL();
$db->query("SELECT * FROM `php_users`");
// 以BSD協(xié)議為例,下面是一份開源的PHP代碼
// 這份代碼必須在遵循BSD協(xié)議的前提下使用
/**
* Smarty模板類
*/
class Smarty {
public function __construct() {
// 構(gòu)造函數(shù)代碼
}
public function assign($tpl_var, $value = null) {
// 變量賦值函數(shù)代碼
}
public function display($template) {
// 模板輸出函數(shù)代碼
}
}
$tpl = new Smarty();
$tpl->assign("username", "張三");
$tpl->display("index.tpl");
Open Source自由的精神,使得Bill Gates以及Adobe公司創(chuàng)始人表示看到開源的軟件讓他們醒悟,使他們反思以前的商業(yè)模式。擺脫過去的束縛,讓創(chuàng)新和技術(shù)的進步更加快速而自由。
然而,在開源的前提下,也存在著版權(quán)方面問題。許多人利用開源代碼進行未授權(quán)的商業(yè)用途,這破壞了開源社區(qū)的互惠互利精神。因此,在履行自由軟件基金會的協(xié)議同時,我們也應(yīng)該珍惜開源社區(qū)的資源和心血,為開源社區(qū)的發(fā)展做出自己的貢獻。