可用php,可用ph梯度分離的是

本文目錄一覽:

php是什麼?

超文本預處理器

PHP(外文名:Hypertext Preprocessor,中文名:超文本預處理器)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。

PHP原始為Personal Home Page的縮寫,已經正式更名為 “PHP: Hypertext Preprocessor”。注意不是“Hypertext Preprocessor”的縮寫,這種將名稱放到定義中的寫法被稱作遞歸縮寫。PHP於1994年由Rasmus Lerdorf創建,剛剛開始是Rasmus Lerdorf為了要維護個人網頁而製作的一個簡單的用Perl語言編寫的程序。這些工具程序用來顯示 Rasmus Lerdorf 的個人履歷,以及統計網頁流量。後來又用C語言重新編寫,包括可以訪問數據庫。他將這些程序和一些表單直譯器整合起來,稱為 PHP/FI。PHP/FI 可以和數據庫連接,產生簡單的動態網頁程序。在1995年以Personal Home Page Tools (PHP Tools) 開始對外發表第一個版本,Lerdorf寫了一些介紹此程序的文檔。並且發布了PHP1.0!在這的版本中,提供了訪客留言本、訪客計數器等簡單的功能。以後越來越多的網站使用了PHP,並且強烈要求增加一些特性。比如循環語句和數組變量等等;在新的成員加入開發行列之後,Rasmus Lerdorf 在1995年6月8日將 PHP/FI 公開發布,希望可以透過社群來加速程序開發與尋找錯誤。這個發布的版本命名為 PHP 2,已經有 PHP 的一些雛型,像是類似 Perl的變量命名方式、表單處理功能、以及嵌入到 HTML 中執行的能力。程序語法上也類似 Perl,有較多的限制,不過更簡單、更有彈性。PHP/FI加入了對MySQL的支持,從此建立了PHP在動態網頁開發上的地位。到了1996年底,有15000個網站使用 PHP/FI。在1997年,任職於 Technion IIT公司的兩個以色列程序設計師:Zeev Suraski 和 Andi Gutmans,重寫了 PHP 的剖析器,成為 PHP 3 的基礎。而 PHP 也在這個時候改稱為PHP:Hypertext Preprocessor。經過幾個月測試,開發團隊在1997年11月發布了 PHP/FI 2。隨後就開始 PHP 3 的開放測試,最後在1998年6月正式發布 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 發布後開始改寫PHP 的核心,這個在1999年發布的剖析器稱為 Zend Engine,他們也在以色列的 Ramat Gan 成立了 Zend Technologies 來管理 PHP 的開發。在2000年5月22日,以Zend Engine 1.0為基礎的PHP 4正式發布,2004年7月13日則發布了PHP 5,PHP 5則使用了第二代的Zend Engine。PHP包含了許多新特色,像是強化的面向對象功能、引入PDO(PHP Data Objects,一個存取數據庫的延伸函數庫)、以及許多效能上的增強。PHP 4已經不會繼續更新,以鼓勵用戶轉移到PHP 5。2008年PHP 5成為了PHP唯一的有在開發的PHP版本。將來的PHP 5.3將會加入Late static binding和一些其他的功能強化。PHP 6 的開發也正在進行中,主要的改進有移除register_globals、magic quotes 和 Safe mode的功能。

PHP最新穩定版本:5.4.30(2013.6.26)PHP最新發布的正式版本:5.5.14(2014.6.24)PHP最新測試版本:5.6.0 RC2(2014.6.03)2013年6月20日,PHP開發團隊自豪地宣布推出PHP 5.5.0。此版本包含了大量的新功能和bug修復。需要開發者特別注意的一點是不再支持 Windows XP 和 2003 系統。2014年10月16日,PHP開發團隊宣布PHP 5.6.2可用。四安全相關的錯誤是固定在這個版本,包括修復cve-2014-3668,cve-2014-3669和cve-2014-3670。所有的PHP 5.6鼓勵用戶升級到這個版本。

PHP的特性包括:1. PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。2. PHP可以比CGI或者Perl更快速的執行動態網頁——動態頁面方面,與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多;PHP具有非常強大的功能,所有的CGI的功能PHP都能實現。3. PHP支持幾乎所有流行的數據庫以及操作系統。4. 最重要的是PHP可以用C、C++進行程序的擴展!

實現以下功能,可用php,html,js

a href=”;amp;tn=44039180_cpramp;fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y4nvmsPhRkuHTvnHDduj-90ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3En103nHnd” target=”_blank” class=”baidu-highlight” rel=”nofollow”傳輸層/a

PHP流(Stream)的概述與使用詳解

在現代 PHP 特性中,流或許是最出色但使用率最低的。雖然 PHP 4.3 就引入了流,但是很多開發者並不知道流的存在,因為人們很少提及流,而且流的文檔也很匱乏。PHP 官方文檔對流的解釋如下:

可能看完這段解釋後還是雲里霧裡,我們簡化一下,流的作用是在出發地和目的地之間傳輸數據。出發地和目的地可以是文件、命令行進程、網絡連接、ZIP 或 TAR 壓縮文件、臨時內存、標準輸入或輸出,或者是通過 PHP 流封裝協議實現的任何其他資源。

如果你讀寫過文件,就用過流;如果你從 php://stdin 讀取過數據,或者把輸入寫入 php://stdout ,也用過流。流為 PHP 的很多 IO 函數提供了底層實現,如 file_get_contents、fopn、fread 和 fwrite 等。PHP 的流函數提供了不同資源的統一接口。

我們可以把流比作管道,把水(資源數據)從一個地方引到另一個地方。在水從出發地到目的地的過程中,我們可以過濾水,可以改變水質,可以添加水,也可以排出水。

流式數據的種類各異,每種類型需要獨特的協議,以便讀寫數據,我們稱這些協議為 流封裝協議 。例如,我們可以讀寫文件系統,可以通過 HTTP、HTTPS 或 SSH 與遠程 Web 服務器通信,還可以打開並讀寫 ZIP、RAR 或 PHAR 壓縮文件。這些通信方式都包含下述相同的過程:

1.開始通信

2.讀取數據

3.寫入數據

4.結束通信

雖然過程是一樣的,但是讀寫文件系統中文件的方式與收發 HTTP 消息的方式有所不同,流封裝協議的作用是使用通用的接口封裝這種差異。

每個流都有一個協議和一個目標。指定協議和目標的方法是使用流標識符:scheme://target,其中 scheme 是流的封裝協議,target 是流的數據源。

http://流封裝協議

下面使用 HTTP 流封裝協議創建了一個與 Flicker API 通信的 PHP 流:

不要以為這是普通的網頁 URL,file_get_contents() 函數的字符串參數其實是一個流標識符。http 協議會讓 PHP 使用 HTTP 流封裝協議,在這個參數中,http 之後是流的目標。

我們通常使用 file_get_contents()、fopen()、fwrite() 和 fclose() 等函數讀寫文件系統,因為 PHP 默認使用的流封裝協議是 file://,所以我們很少認為這些函數使用的是 PHP 流。下面的示例演示了使用 file:// 流封裝協議創建一個讀寫 /etc/hosts 文件的流:

我們通常會省略掉 file:// 協議,因為這是 PHP 使用的默認值。

php://流封裝協議

編寫命令行腳本的 PHP 開發者會感激 php:// 流封裝協議,這個流封裝協議的作用是與 PHP 腳本的標準輸入、標準輸出和標準錯誤文件描述符通信。我們可以使用 PHP 提供的文件系統函數打開、讀取或寫入下面四個流:

1. php://stdin :這是個只讀 PHP 流,其中的數據來自標準輸入。PHP 腳本可以使用這個流接收命令行傳入腳本的信息;

2. php://stdout :把數據寫入當前的輸出緩衝區,這個流只能寫,無法讀或尋址;

3. php://memory :從系統內存中讀取數據,或者把數據寫入系統內存。缺點是系統內存有限,所有使用 php://temp 更安全;

4. php://temp :和 php://memory 類似,不過,沒有可用內存時,PHP 會把數據寫入這個臨時文件。

其他流封裝協議

PHP 和 PHP 擴展還提供了很多其他流封裝協議,例如,與 ZIP 和 TAR 壓縮文件、FTP 服務器、數據壓縮庫、Amazon API、Dropbox API 等通信的流封裝協議。需要注意的是,PHP 中的 fopen()、fgets()、fputs()、feof() 以及 fclose() 等函數不僅可以用來處理文件系統中的文件,還可以在所有支持這些函數的流封裝協議中使用。

自定義流封裝協議

我們還可以自己編寫 PHP 流封裝協議。PHP 提供了一個示例 StreamWrapper 類,演示如何編寫自定義的流封裝協議,支持部分或全部 PHP 文件系統函數。關於如何編寫,具體請參考以下文檔:

有些 PHP 流能夠接受一系列可選的參數,這些參數叫流上下文,用於定製流的行為。不同的流封裝協議使用的流上下文有所不同,流上下文使用 stream_context_create() 函數創建,這個函數返回的上下文對象可以傳入大多數文件系統函數。

例如,你知道可以使用 file_get_contents() 發送 HTTP POST 請求嗎?使用一個流上下文對象即可實現:

流過濾器

目前為止我們討論了如何打開流,讀取流中的數據,以及把數據寫入流。不過,PHP 流真正強大的地方在於過濾、轉換、添加或刪除流中傳輸的數據,例如,我們可以打開一個流處理 Markdown 文件,在把文件內容讀入內存的過程中自動將其轉化為 HTML。

運行該腳本,輸出的都是大寫字母:

我們還可以使用 php://filter 流封裝協議把過濾器附加到流上,不過,使用這種方式之前必須先打開 PHP 流:

這個方式實現效果和 stream_filter_append() 函數一樣,但是相比之下更為繁瑣。不過,PHP 的某些文件系統函數在調用後無法附加過濾器,例如 file() 和 fpassthru(),使用這些函數時只能使用 php://filter 流封裝協議附加流過濾器。

自定義流過濾器

我們還可以編寫自定義的流過濾器。其實,大多數情況下都要使用自定義的流過濾器,自定義的流過濾器是個 PHP 類,繼承內置的 php_user_filter 類( ),且必須實現 filter()、onCreate() 和 onClose() 方法,最後,必須使用 stream_filter_register() 函數註冊自定義的流過濾器。

然後,我們必須使用 stream_filter_register() 函數註冊這個自定義的 DirtyWordsFilter 流過濾器:

第一個參數用於標識這個自定義過濾器的過濾器名,第二個參數是這個自定義過濾器的類名。接下來就可以使用這個自定義的流過濾器了:

修改 test.txt 內容如下:

運行上面的自定義過濾器腳本,結果如下:

stream_bucket_append函數:為隊列添加數據 

stream_bucket_make_writeable函數:從操作的隊列中返回一個數據對象

stream_bucket_new函數:為當前隊列創建一個新的數據

stream_bucket_prepend函數:預備數據到隊列 

stream_context_create函數:創建數據流上下文

stream_context_get_default函數:獲取默認的數據流上下文

stream_context_get_options函數:獲取數據流的設置

stream_context_set_option函數:對數據流、數據包或者上下文進行設置

stream_context_set_params函數:為數據流、數據包或者上下文設置參數

stream_copy_to_stream函數:在數據流之間進行複製操作

stream_filter_append函數:為數據流添加過濾器

stream_filter_prepend函數:為數據流預備添加過濾器

stream_filter_register函數:註冊一個數據流的過濾器並作為PHP類執行

stream_filter_remove函數:從一個數據流中移除過濾器

stream_get_contents函數:讀取數據流中的剩餘數據到字符串

stream_get_filters函數:返回已經註冊的數據流過濾器列表

stream_get_line函數:按照給定的定界符從數據流資源中獲取行

stream_get_meta_data函數:從封裝協議文件指針中獲取報頭/元數據

stream_get_transports函數:返回註冊的Socket傳輸列表

stream_get_wrappers函數:返回註冊的數據流列表

stream_register_wrapper函數:註冊一個用PHP類實現的URL封裝協議

stream_select函數:接收數據流數組並等待它們狀態的改變

stream_set_blocking函數:將一個數據流設置為堵塞或者非堵塞狀態

stream_set_timeout函數:對數據流進行超時設置

stream_set_write_buffer函數:為數據流設置緩衝區

stream_socket_accept函數:接受由函數stream_ socket_server()創建的Socket連接

stream_socket_client函數:打開網絡或者UNIX主機的Socket連接

stream_socket_enable_crypto函數:為一個已經連接的Socket打開或者關閉數據加密

stream_socket_get_name函數:獲取本地或者網絡Socket的名稱

stream_socket_pair函數:創建兩個無區別的Socket數據流連接

stream_socket_recvfrom函數:從Socket獲取數據,不管其連接與否

stream_socket_sendto函數:向Socket發送數據,不管其連接與否

stream_socket_server函數:創建一個網絡或者UNIX Socket服務端

stream_wrapper_restore函數:恢復一個事先註銷的數據包

stream_wrapper_unregister函數:註銷一個URL地址包

整合資料

本文整合於以下兩篇文章

php用什麼軟件來編程

PHP可使用PhpStorm進行編寫,其實你使用任何支持PHP代碼的編輯器都可以進行編程,因為最終使用的是Apache等PHP解釋器來進行處理的。

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++進行程序的擴展!

php的作用?

PHP是一種簡單的,面向對象的,解釋型的,健壯的,安全的,性能非常之高的,獨立於架構的,可移植的,動態的腳本語言。PHP具有和JAVA類似的Class關鍵字。因為不需要虛擬機,以致速度比JAVA快5倍。PHP

正迅速變成一種標準的,多用途的,面向對象的腳本語言。PHP不僅可用來開發Web應用程序,也可以開發普通應用程序。

PHP是一種功能強大的腳本語言。PHP將擊敗PERL/Python並取而代之。PHP是下一代的PERL/Python腳本。PHP可以勝任任何PERL/Python做的工作,並且做的更多,更好,更簡潔!!

PHP是Hypertext

Pre-Processor(超文本預處理器)的縮寫,它是一種服務器端的HTML腳本/編程語言。PHP語法上與C相似,可運行在Apache,

Netscape/iPlanet, 和 Microsoft IIS Web 服務器上。PHP作為一種工具,

可以讓你創建動態的Web頁面。應用PHP的網頁與常規的HTML頁面並無二致,你可以用同樣的方式來創建、編輯它們。PHP允許你直接在HTML文件里寫入簡單的腳本,這一點與javascript非常相似。而不同的是,PHP不依賴於瀏覽器,是服務器端的語言,而javascript卻是一種客戶端的嵌在HTML中的語言。概念上,PHP與Netscape

的LiveWire Pro產品,Microsoft的ASP以及SunMicrosystem 的JSP相似。

PHP不僅可以用來創建Web應用程序,也可以用來開發普通的單機應用程序。

PHP的強勁之處在於:

·PHP是一項最優秀的技術。其它技術,如PERL,Python, Tcl, VB script, ASP 相對來說,都是陳舊低劣

的。即使是Java/JSP,也在PHP之下。

·開放源碼

·廣泛的數據庫連接

·大量的擴展庫

·作為一種多用途的腳本語言,比PERL,VB script, ASP, JSP都要優秀。

為什麼選擇PHP?因為PHP是最好的,原因如下:

·PERL“味道不好”,因為其程序不易閱讀和維護,且不是面向對象的。把PERL忘了,轉向PHP吧。PERL程序員將拋棄PERL,因為他們愛上了PHP!

PHP實際上就是“現代版的PERL”,只是名稱不同而已。

·Java

是面向對象的,但速度很慢。Java程序遠行起來很慢,對它唯一的抱怨就是——“Java,真是慢的糟糕”。而且十分複雜(具有許多層,如JVM,JIT

等等)。這往往誘發問題。既然有了Linux,為什麼還要Java 呢?

·Python“不錯”,但沒有C語言中的括號和大括號,而這在vi編輯器中對操控代碼非常有用。如果不能利用vi/emacs編輯器搜索括號/大括號的命令迅速操控代碼,那麼就好象斷了手一樣。PHP在技術上比Python更加先進。

·PHP是最好的,因為它面向對象,並且吸收了C/C++/Java/PERL的精華。PHP可以替代PERL,Python, Java,C,

C++, awk, Unix shell 腳本,Visual Basic 和其它語言!!

PHP直接運行,而且是由C寫成的。

·每一個電腦程序員都知道PHP是最好的,不信問一下你旁邊的程序員。

·只有PHP才能稱雄於21世紀、22世紀以及更遠的將來。

·為什麼我們認為PERL,Python和Java程序員會將歸附PHP,這裡有一個很重要的原因。

以前,世界上許多公司都把PHP當作是一個“高度機密,嚴格保密”的電腦程序語言,但是現在它已經變成最為著名的,在Web,

Internet, E-commerce以及

B2B等諸多項目上應用最廣泛的面向對象的腳本語言。即使是在今天,仍有許多競爭性(competing)公司把PHP當作是高度機密的東西,決不向外界(競爭對手)透露半點。

PHP將如同暴風雨一般席捲整個世界,IT工業將為之震驚。PHP的力量在於它是跨平台的,可以運行在任何地方。如Linux,Windows

95/98/NT/2000/XP, Solaris, HPUX

以及各種UNIX。PHP只需寫一次,就可以配置在任何地方。PHP可以運行在Apache,Microsoft IIS等多種Web服務器上。

PHP比Java快5到20倍!!實際的比較測試顯示,PHP的運行速度是Java3.7倍左右。PHP太容易使用了,你可以用它在非常短的時間裡,非常迅速的開發出非常複雜的web,e-commerce和一般的單機應用程序。(在將來,PHP將會模仿Java大多數的功能,相信Java程序員也會喜歡上它。PHP將包含Java中的關鍵字,如class,extends,interface,

implements, public,protected, private 等等等等。)

PHP具有面向對象特性,它吸收了Java, C++, PERL

和C的最優秀的部分。PHP可以說是所有腳本/編程語言中的寶石。不久,它就會成為全世界程序員的“麥加聖地”。PHP即可以運行在Window95/NT/2000/XP上,也可以運行在各種UNIX上。

們將大吃一驚——PHP極有可能成為21世紀的電腦編程語言。

可以使用Zend Optimizer對PHP進行編譯和優化,從而使它運行的更快。PHP4.0中已經集成了Zend Optimizer。

首先,你在開發、測試、除錯過程中,用PHP腳本語言編寫你的應用程序。一旦項目完成,你便可以用Zend編譯器,將PHP文件編譯成運行速度更快的可執行程序。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/201125.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-06 11:30
下一篇 2024-12-06 11:31

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 預處理共軛梯度法

    預處理共軛梯度法是一種求解線性方程組的迭代方法,相比直接求解,其具有更高的效率和更快的速度。本文將從幾個方面對預處理共軛梯度法進行詳細的闡述,並給出完整的代碼示例。 一、預處理共軛…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若服務器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • PHP與Python的比較

    本文將會對PHP與Python進行比較和對比分析,包括語法特性、優缺點等方面。幫助讀者更好地理解和使用這兩種語言。 一、語法特性 PHP語法特性: <?php // 簡單的P…

    編程 2025-04-27
  • Python邏輯回歸梯度下降法

    本文將通過Python邏輯回歸梯度下降法,對於邏輯回歸的原理、實現方法和應用進行詳細闡述。 一、邏輯回歸原理 邏輯回歸是一種常用的分類算法,其原理可以用線性回歸模型來描述,將線性回…

    編程 2025-04-27
  • PHP版本管理工具phpenv詳解

    在PHP項目開發過程中,我們可能需要用到不同版本的PHP環境來試驗不同的功能或避免不同版本的兼容性問題。或者我們需要在同一台服務器上同時運行多個不同版本的PHP語言。但是每次手動安…

    編程 2025-04-24
  • 梯度、散度、旋度的意義及應用

    一、梯度 梯度,是矢量函數的微分運算,表示函數在該點變化最快的方向和大小,通俗地說,就是函數在某點的變化率,其形式化表示如下: $$\nabla f = \frac{\partia…

    編程 2025-04-24

發表回復

登錄後才能評論