1. php的好處有什麼
PHP是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標准通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
PHP的特性包括:
1. PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。
2. PHP可以比CGI或者Perl更快速的執行動態網頁——動態頁面方面,與其他的編程語言相比,
PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多;
PHP具有非常強大的功能,所有的CGI的功能PHP都能實現。
3. PHP支持幾乎所有流行的資料庫以及操作系統。
4. 最重要的是PHP可以用C、C++進行程序的擴展!
2. php是世界上最好的語言
PHP是世界上最好的語言。這是網路上廣泛流傳的一個梗,並不是說PHP就真的是編程最好的語言,其實每款編程語言都有自身的優勢以及所專長的領域,並不能簡單地說PHP就是最好的編程語言,這多少有點調侃的成分。
PHP優點
(一)流行,容易上手
PHP是目前最流行的編程語言,這毋庸置疑。它驅動全球超過2億多個網站,有全球超過81.7%的公共網站在伺服器端採用PHP。PHP常用的數據結構都內置了,使用起來方便簡單,也一點都不復雜,表達能力相當靈活。
(二)開發職位很多
在伺服器端的網站編程中PHP會更容易幫助你找到工作。很多互聯網相關企業都在使用PHP開發框架,所以可以說市場對PHP的開發程序員的需求還是比較大的。
(三)仍然在不斷發展
PHP在不斷兼容著類似closures和命名空間等技術,同時兼顧性能和當下流行的框架。版本是7之後,一直在提供更高性能的應用。
(四)可植入性強
PHP 語言在補丁漏洞升級過程中,核心部分植入簡單易行,且速度快。
(五)拓展性強
PHP 語言在資料庫應用過程中,可以從資料庫調取各類數據,執行效率高。
PHP缺點
(一)PHP的解釋運行機制
在 PHP 中,所有的變數都是頁面級的,無論是全局變數, 還是類的靜態成員,都會在頁面執行完畢後被清空。
(二)設計缺陷,缺少關注PHP被稱作是不透明的語言,因為沒有堆棧追蹤,各種脆弱的輸入。沒有一個明確的設計哲學。早期的PHP受到Perl的影響,帶有out參數的標准庫又是有C語言引入,面向對象的部分又是從C++和Java學來的。
(三)對遞歸的不良支持
PHP並不擅長遞歸。它能容忍的遞歸函數的數量限制和其他語言比起來明顯少。
這句話的產生,雖然帶有一定php碼農個人感情色彩的偏見,但是未嘗沒有道理。首先,PHP的使用率遠遠高於其他語言的使用率,在web開發中佔有很大份額。
同時PHP作為一種通用開源語言,因其語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛。具有簡單易懂的語法、沒有奇怪的黑魔法、既能面向過程,又能面向對象、安裝後各種擴展集一身、包括但不限於mysql、json、mbstr等,方便至極。
在這種情況下,PHP就被戲稱為「世上最好的語言」,當然它也不負眾望,成了大部分IT碼農的首選。它的門檻低,使得更多新手小白入門快,能快速了解IT這行,以及自己的工作性質。語法簡單,很快融入其中,被成為「弱類型語言」。
現在很多重量級的開源項目都會使用PHP語言,企業開發上也越來越支持使用PHP。它成熟的框架,大大縮短開發周期,在加上成本低,導致了市場需求大。
(2)php命名空間好處擴展閱讀
主要參考框架
(一)CodeIgniter的優點
1、配置簡單,全部的配置使用 PHP腳本來配置,執行效率高;具有基本的路由功能,能夠進行一定程度的路由;具有初步的Layout功能,能夠製作一定程度的界面外觀;資料庫層封裝的不錯,具有基本的MVC功能。
2、快速簡潔,代碼不多,執行性能高,PHP框架簡單, 容易上手,學習成本低,文檔詳細;自帶了很多簡單好用的library,框架適合小型應用。
(二)CodeIgniter 缺點
1、把Model層簡單的理解為資料庫操作。
2、PHP 框架略顯簡單,只能夠滿足小型應用,略微不太能夠滿足中型應用需要。
(三)CakePHP 的優點
1、CakePHP 是最類似於RoR的 PHP 框架,包括設計方式,資料庫操作的Active Record方式;設計層面很優雅,沒有自帶多餘的 library,所有的功能都是純粹的框架,執行效率還不錯;資料庫層的hasOne,hasMany 功能很強大,對於復雜業務處理比較合適;路由功能,配置功能還不錯;自動構建腳手架(scaffold)很強大;適合中型應用;基本實現過了MVC每一層; 具有自動操作命令行腳本功能。
2、文檔比較全,在國內推廣的比較成功,大部分人都知道CakePHP,學習成本中等。
(四)CakePHP 的缺點
1、CakePHP非常嚴重的問題是把Model理解為資料庫層操作,嚴重影響了除了資料庫之外的操作能力
2、CakePHP的cache功能略顯薄弱,配置功能稍嫌弱;CakePHP不適合大型應用,只適合中型應用,小型應用來說略微的學習成本高了點。
參考資料來源:網路-PHP
3. php 框架要不要使用命名空間
要的,幾乎所有的php框架都需要用到命名空間.
使用框架的好處就是它已經集合很多必備的基礎類,比方說資料庫操作類,工廠類,路由功能等等,區別於原生代碼.
4. 關於php的命名空間的問題
PHP 命名空間(namespace)是在PHP 5.3中加入的,如果你學過C#和Java,那命名空間就不算什麼新事物。 不過在PHP當中還是有著相當重要的意義。
PHP 命名空間可以解決以下兩類問題:
用戶編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字沖突。
為很長的標識符名稱(通常是為了緩解第一類問題而定義的)創建一個別名(或簡短)的名稱,提高源代碼的可讀性。
默認情況下,所有常量、類和函數名都放在全局空間下,就和PHP支持命名空間之前一樣。
命名空間通過關鍵字namespace 來聲明。如果一個文件中包含命名空間,它必須在其它所有代碼之前聲明命名空間。
PHP支持兩種抽象的訪問當前命名空間內部元素的方法,__NAMESPACE__ 魔術常量和namespace關鍵字。
常量__NAMESPACE__的值是包含當前命名空間名稱的字元串。在全局的,不包括在任何命名空間中的代碼,它包含一個空的字元串
5. thinkphp 命名空間什麼情況下使用,use後面載入什麼
命名空間其實只是為了載入文件更方便,tp的自動載入機制使用了它。
use 是繼承類使用的關鍵詞,當載入父類時,tp會更加use後面的命名空間查找對應的文件。tp會在多個目錄進行查找,具體的可以查看tp文檔的自動載入機制。
6. 在php 命名空間 可以使用關鍵詞作為函數名嗎
PHP 命名空間提供了一種將相關的類、函數和常量組合到一起的途徑,有點類似於文件管理器中,按照不同的文件夾來管理文件。根據 PHP 手冊:
在PHP中,命名空間用來解決在編寫類庫或應用程序時創建可重用的代碼如類或函數時碰到的兩類問題:
用戶編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字沖突。
為很長的標識符名稱(通常是為了緩解第一類問題而定義的)創建一個別名(或簡短)的名稱,提高源代碼的可讀性。
在 php 命名空間中,語法等等都依舊遵循原有規則,因此,關鍵詞不可以使用作為函數名。
7. php 命名空間是什麼意思
從廣義上來說,命名空間是一種封裝事物的方法。在很多地方都可以見到這種抽象概念。例如,在操作系統中目錄用來將相關文件分組,對於目錄中的文件來說,它就扮演了命名空間的角色。PHP 命名空間提供了一種將相關的類、函數和常量組合到一起的途徑。
具體舉個例子,文件foo.txt可以同時在目錄/home/greg和/home/other中存在,但在同一個目錄中不能存在兩個foo.txt文件。另外,在目錄/home/greg外訪問foo.txt文件時,我們必須將目錄名以及目錄分隔符放在文件名之前得到/home/greg/foo.txt。這個原理應用到程序設計領域就是命名空間的概念。
在PHP中,命名空間用來解決在編寫類庫或應用程序時創建可重用的代碼如類或函數時碰到的兩類問題:
用戶編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字沖突。
為很長的標識符名稱(通常是為了緩解第一類問題而定義的)創建一個別名(或簡短)的名稱,提高源代碼的可讀性。
8. php命名空間沒有autoload能用么
能用。
__autoload 是當前需要使用的類沒有引入時,在PHP拋出錯誤前被觸發,未定義的類名會被當作參數傳入。
命名空間主要是為了解決命名沖突問題。單獨使用命名空間只是讓類名增加前綴,不發生沖突,系統並不會進行自動導入類。
只要你已經通過include等導入了類,就可以不使用autoload。
9. thinkphp命名空間有什麼作用,怎麼使用
在php里邊,同一個應用請求里邊如果存在兩個方法(類名),他們的名字一樣(例如都是getName()),由於php本身語法規則的限制,系統是要報錯的
解決方法:
① 把他們的名字改為不一樣的 例如 agetName() bgetName()
② 通過命名空間解決
Yii 框架為了避免名字重復引起問題,同步的類前邊都有 C 字樣
1. 簡單應用
a) 命名空間是虛擬的定義空間,不是真實存在目錄
b) 命名空間的分隔符都是反斜杠 \
c) 非限定名稱:getName() 獲得與其最近的命名空間的getName()
d) 限定名稱:beijing\getName() 相對方式 通過最近的命名空間定位beijing\getName()
e) 完全限定名稱: \beijing\getName() 直接在指定的命名空間獲得具體元素
f) 命名空間針對:函數、類名、常量三者其作用,在命名空間里邊把這三種統稱為元素
2、別名和導入
a) 導入/引入 use
b) 使用一個元素,使用非限定名稱,在當前最接近的空間里邊獲得元素
c) 如果當前空間里邊沒有指定元素,也可以在導入的空間里邊尋找
3、公共空間
a) 第一種情況
b) 沒有使用namespace定義空間,當前空間就是一個公共空間
c) 例如一個有namespace的文件引入了一個沒有namespace的文件程序
d) 沒有namespace的文件空間就是公共空間
e) 在namespace文件里邊可以通過\斜杠直接訪問公共空間元素
f) function getName(){} ------公共空間的元素
g) namespace beijing;
h) function getName(){} -----beijing空間的元素
i) 第二種情況
j) 當前文件沒有namespace、但是引入的文件有namespace
k) 當前文件就是公共空間,引入文件有自己空間
10. PHP 命名空間
1. namespace Zend\Http\PhpEnvironment;
這句代碼定義了一個命名空間,你可以理解為定義一個名稱為 Zend\Http\PhpEnvironment 的域名。
在定義了之後,下面所申明的class, interface, const等都是在申明的這個「域」裡面的。當引用一個申明了命名空間的包含文件,想要調用這個裡面的東西,那就必須:
調整當前腳本也到這個域名里,否則,就得用namesapce的全稱。
比如,inc.php 文件:
namespace Zend\Http\PhpEnvironment;
class Bar {}//定義了一個類
則其他文件調用時:
// 訪問Foo的第一種方法,用全稱
require 'inc.php';
$foo = new \Zend\Http\PhpEnvironment\Bar();
// 訪問Foo的第二種方法
namespace Foo; // 調整當前腳本到Foo這個ns域,而且namespace申明必須在第一句
require 'inc.php';
$foo = new Bar();
2. use關鍵字目的是使用ns的別名:
比如說,上面的
// 訪問Foo的第一種方法,用全稱
require 'inc.php';
$foo = new \Zend\Http\PhpEnvironment\Bar();
用uses後,寫法如下:
use \Zend\Http\PhpEnvironment as pe; //定義別名
$foo = new \pe\Bar(); //用短的別名來代替原來的
如果省略後面的as ....,那麼,就可以直接用最後一節的文字來代替,比如,上面的:
use \Zend\Http\PhpEnvironment; //定義別名
$foo = new \PhpEnvironment\Bar(); //用短的別名來代替原來的
================================================