Hướng dẫn what is php known as? - php được gọi là gì?

PHP [từ viết tắt đệ quy cho

$human_readable_date = $user->getBirthday[]?->diffForHumans[];
1] là ngôn ngữ kịch bản đa năng nguồn mở được sử dụng rộng rãi, đặc biệt phù hợp để phát triển web và có thể được nhúng vào HTML.

Đẹp, nhưng điều đó có nghĩa là gì? Một ví dụ:

Ví dụ #1 ví dụ giới thiệu

$human_readable_date = $user->getBirthday[]?->diffForHumans[];
2

$human_readable_date = $user->getBirthday[]?->diffForHumans[];
3

$human_readable_date = $user->getBirthday[]?->diffForHumans[];
4

Thay vì nhiều lệnh để xuất HTML [như đã thấy trong C hoặc Perl], các trang PHP chứa HTML với mã nhúng thực hiện "một cái gì đó" [trong trường hợp này, xuất ra "Hi, tôi là một tập lệnh PHP!"]. Mã PHP được đặt trong các hướng dẫn xử lý kết thúc và khởi động đặc biệt

$human_readable_date = $user->getBirthday[]?->diffForHumans[];
5 và
$human_readable_date = $user->getBirthday[]?->diffForHumans[];
6 cho phép bạn nhảy vào và ra khỏi "chế độ PHP".

Điều phân biệt PHP với một cái gì đó như JavaScript phía máy khách là mã được thực thi trên máy chủ, tạo HTML sau đó được gửi đến máy khách. Khách hàng sẽ nhận được kết quả chạy tập lệnh đó, nhưng sẽ không biết mã cơ bản là gì. Bạn thậm chí có thể định cấu hình máy chủ web của mình để xử lý tất cả các tệp HTML của mình bằng PHP và sau đó thực sự không có cách nào người dùng có thể biết những gì bạn có tay áo.

Phần tốt nhất về việc sử dụng PHP là nó cực kỳ đơn giản cho một người mới đến, nhưng cung cấp nhiều tính năng nâng cao cho một lập trình viên chuyên nghiệp. Đừng ngại đọc danh sách dài các tính năng của PHP. Bạn có thể nhảy vào, trong một thời gian ngắn và bắt đầu viết các tập lệnh đơn giản trong vài giờ.

Mặc dù sự phát triển của PHP tập trung vào kịch bản phía máy chủ, bạn có thể làm nhiều hơn với nó. Đọc tiếp, và xem thêm trong PHP có thể làm gì? Phần, hoặc đi đúng hướng dẫn giới thiệu nếu bạn chỉ quan tâm đến lập trình web.

Không có người dùng đóng góp ghi chú cho trang này.

Bài viết này là về ngôn ngữ kịch bản. Đối với các mục đích sử dụng khác, xem PHP [định hướng].

PHPMô hìnhDesigned byNhà phát triểnFirst appearedPhiên bản ổn địnhBản phát hành xem trướcGõ kỷ luậtNgôn ngữ thực hiệnHệ điều hànhGiấy phépPhần mở rộng tên tệpTrang mạngTriển khai chínhChịu ảnh hưởng bởiẢnh hưởng
Đa hình: Bắt buộc, chức năng, hướng đối tượng, thủ tục, phản ánh
Rasmus Lerdorf
Nhóm phát triển PHP, Zend Technologies, Foundation PHPPHP Foundation
Tháng 6 & NBSP; 8, 1995; 27 năm trước [1] [2]; 27 years ago[1][2]

8.1.12 / 2022-10-27

8.2.0 beta / 2022-07-21

Năng động, yếu, dần dần [3]
C [chủ yếu; một số thành phần C ++]
Unix-Like, Windows, MacOS, IBM I, OpenVMS
Giấy phép PHP [hầu hết các động cơ Zend theo giấy phép động cơ Zend]
________ 17, ________ 18, ________ 19, ________ 20, ________ 21
www.php.net
Động cơ zend, hhvm, peachpie, quercus, vẹt
Perl, HTML, C, C ++, Java, [Cites cần] TCL, [2] JavaScript, Hack [4]citation needed] Tcl,[2] JavaScript, Hack[4]
Hack, JSP, ASP
  • Lập trình PHP tại Wikibooks

PHP là một ngôn ngữ kịch bản đa năng hướng đến phát triển web. [5] Nó ban đầu được tạo ra bởi lập trình viên người Canada gốc Đan Mạch Rasmus Lerdorf vào năm 1993 và phát hành vào năm 1995. [6] [7] Việc triển khai tham chiếu PHP hiện được sản xuất bởi nhóm PHP. [8] PHP ban đầu là đại diện cho trang chủ cá nhân, [9] nhưng giờ đây nó là viết tắt của chủ nghĩa khởi tạo đệ quy PHP: Tiền xử lý siêu văn bản. [10] is a general-purpose scripting language geared toward web development.[5] It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995.[6][7] The PHP reference implementation is now produced by The PHP Group.[8] PHP originally stood for Personal Home Page,[9] but it now stands for the recursive initialism PHP: Hypertext Preprocessor.[10]

Mã PHP thường được xử lý trên máy chủ web bởi trình thông dịch PHP được triển khai dưới dạng mô -đun, trình nền hoặc là giao diện cổng thông thường [CGI] có thể thực thi. Trên một máy chủ web, kết quả của mã PHP được giải thích và thực hiện & nbsp; - có thể là bất kỳ loại dữ liệu nào, chẳng hạn như Dữ liệu HTML hoặc Dữ liệu hình ảnh nhị phân & NBSP; - sẽ tạo thành toàn bộ hoặc một phần của phản hồi HTTP. Các hệ thống mẫu web khác nhau, hệ thống quản lý nội dung web và các khung web tồn tại có thể được sử dụng để sắp xếp hoặc tạo điều kiện cho việc tạo ra phản hồi đó. Ngoài ra, PHP có thể được sử dụng cho nhiều tác vụ lập trình bên ngoài bối cảnh web, chẳng hạn như các ứng dụng đồ họa độc lập [11] và điều khiển máy bay không người lái robot. [12] Mã PHP cũng có thể được thực thi trực tiếp từ dòng lệnh.

Trình thông dịch PHP tiêu chuẩn, được cung cấp bởi Zend Engine, là phần mềm miễn phí được phát hành theo giấy phép PHP. PHP đã được chuyển rộng và có thể được triển khai trên hầu hết các máy chủ web trên nhiều hệ điều hành và nền tảng khác nhau. [13]

Ngôn ngữ PHP phát triển mà không có đặc điểm kỹ thuật chính thức hoặc tiêu chuẩn cho đến năm 2014, với việc triển khai ban đầu đóng vai trò là tiêu chuẩn thực tế mà các triển khai khác nhằm tuân theo. Kể từ năm 2014, công việc đã tiếp tục tạo ra một đặc điểm kỹ thuật PHP chính thức. [14]

W3Techs báo cáo rằng, kể từ tháng 10 & NBSP; 2022, "PHP được sử dụng bởi 74,4% của tất cả các trang web có ngôn ngữ lập trình phía máy chủ mà chúng tôi biết." [15] Php phiên bản 7.4 là phiên bản được sử dụng nhiều nhất. Hỗ trợ cho phiên bản 7.3 đã được giảm vào ngày 6 tháng 12 năm 2021.

History[edit][edit]

Lịch sử ban đầu [chỉnh sửa][edit]

Sự phát triển của PHP bắt đầu vào năm 1993 [6] khi Rasmus Lerdorf viết một số chương trình giao diện Gateway [CGI] chung trong C, [16] [17] mà anh ấy đã sử dụng để duy trì trang chủ cá nhân của mình. Ông đã mở rộng chúng để làm việc với các biểu mẫu web và để liên lạc với cơ sở dữ liệu và gọi việc triển khai này là "Trình thông dịch trang chủ/mẫu cá nhân" hoặc PHP/FI.

PHP/FI có thể được sử dụng để xây dựng các ứng dụng web đơn giản, động. Để tăng tốc báo cáo lỗi và cải thiện mã, Lerdorf ban đầu đã công bố phát hành PHP/FI dưới dạng "Công cụ trang chủ cá nhân [Công cụ PHP] Phiên bản 1.0" trên nhóm thảo luận USENET comp.infosystems.www.Authoring.cgi vào ngày 8 tháng 6 năm 1995 . [1] [18] Bản phát hành này đã có chức năng cơ bản mà PHP có ngày hôm nay. Điều này bao gồm các biến giống như perl, xử lý hình thức và khả năng nhúng HTML. Cú pháp giống với Perl, nhưng đơn giản hơn, hạn chế hơn và ít nhất quán hơn. [8]

Một ví dụ về cú pháp PHP sớm: [19]





  Hey, you are using Netscape!




  Sorry, that record does not exist

  Welcome !
  You have  credits left in your account.


PHP sớm không có ý định là một ngôn ngữ lập trình mới và phát triển hữu cơ, với Lerdorf lưu ý khi nhìn lại: "Tôi không biết làm thế nào để ngăn chặn nó, không bao giờ có ý định viết ngôn ngữ lập trình [...] Hoàn toàn không biết làm thế nào để viết một ngôn ngữ lập trình, tôi chỉ tiếp tục thêm bước hợp lý tiếp theo trên đường đi. " 1997.

Thực tế là PHP ban đầu không được thiết kế, mà thay vào đó được phát triển một cách hữu cơ đã dẫn đến việc đặt tên không nhất quán các chức năng và thứ tự không nhất quán của các tham số của chúng. [21] Trong một số trường hợp, các tên hàm được chọn để phù hợp với các thư viện cấp thấp hơn mà PHP đang "gói", [22] trong khi ở một số phiên bản rất sớm của PHP, độ dài của tên hàm được sử dụng bên trong như một hàm băm, vì vậy tên đã được chọn để cải thiện phân phối các giá trị băm. [23]

Php 3 và 4 [Chỉnh sửa][edit]

Zeev Suraski và Andi Gutmans viết lại trình phân tích cú pháp vào năm 1997 và hình thành cơ sở của PHP & NBSP; 3, đổi tên ngôn ngữ thành từ viết tắt đệ quy Php: Tiền xử lý siêu văn bản. [8] [24] Sau đó, thử nghiệm công khai của PHP & NBSP; 3 đã bắt đầu, và buổi ra mắt chính thức diễn ra vào tháng 6 năm 1998. Suraski và Gutmans sau đó bắt đầu viết lại cốt lõi mới của PHP, sản xuất động cơ Zend vào năm 1999. [25] Họ cũng thành lập Zend Technologies ở Ramat Gan, Israel. [8]

Vào ngày 22 tháng 5 năm 2000, Php 4, được cung cấp bởi Zend Engine 1.0, đã được phát hành. [8] Đến tháng 8 năm 2008, chi nhánh này đã đạt đến phiên bản 4.4.9. PHP & NBSP; 4 hiện không còn được phát triển và cũng không có bất kỳ cập nhật bảo mật nào được lên kế hoạch phát hành. [26] [27]

Php 5 [Chỉnh sửa][edit]

Vào ngày 1 tháng 7 năm 2004, Php 5 đã được phát hành, được cung cấp bởi Zend Engine II mới. [8] PHP & NBSP; 5 bao gồm các tính năng mới như hỗ trợ cải tiến cho lập trình hướng đối tượng, tiện ích mở rộng đối tượng dữ liệu PHP [PDO] [xác định giao diện nhẹ và nhất quán để truy cập cơ sở dữ liệu] và nhiều cải tiến hiệu suất. [28] Năm 2008, PHP & NBSP; 5 đã trở thành phiên bản ổn định duy nhất đang được phát triển. Liên kết tĩnh muộn đã bị thiếu trong các phiên bản trước của PHP và đã được thêm vào phiên bản 5.3. [29] [30]

Nhiều dự án nguồn mở cấp cao đã ngừng hỗ trợ PHP & NBSP; 4 trong mã mới từ ngày 5 tháng 2 năm 2008, vì Sáng kiến ​​Gophp5, [31] được cung cấp bởi một tập đoàn của các nhà phát triển PHP thúc đẩy quá trình chuyển đổi từ PHP & NBSP; 4 sang PHP & NBSP; 5 . [32] [33]

Theo thời gian, các thông dịch viên PHP đã có sẵn trên hầu hết các hệ điều hành 32 bit và 64 bit hiện có, bằng cách xây dựng chúng từ mã nguồn PHP hoặc bằng cách sử dụng các nhị phân được xây dựng trước. [34] Đối với các phiên bản PHP 5.3 và 5.4, phân phối nhị phân Windows Windows duy nhất có sẵn là các bản dựng IA-32 32 bit, [35] [36] yêu cầu chế độ tương thích Windows 32 bit trong khi sử dụng Dịch vụ thông tin Internet [IIS] trên Windows 64 bit nền tảng. Php phiên bản 5.5 đã tạo ra các bản dựng 64 bit x86-64 có sẵn cho Microsoft Windows. [37]

Hỗ trợ bảo mật chính thức cho Php 5.6 đã kết thúc vào ngày 31 tháng 12 năm 2018. [38]

Php 6 và Unicode [Chỉnh sửa][edit]

PHP đã nhận được các đánh giá hỗn hợp do thiếu hỗ trợ Unicode bản địa ở cấp độ ngôn ngữ cốt lõi. [39] [40] Năm 2005, một dự án do Andrei Zmievski đứng đầu đã được khởi xướng để mang lại hỗ trợ Unicode bản địa trong suốt PHP, bằng cách nhúng các thành phần quốc tế cho thư viện Unicode [ICU] và đại diện cho các chuỗi văn bản là UTF-16 trong nội bộ. [41] Vì điều này sẽ gây ra những thay đổi lớn cho cả phần bên trong của ngôn ngữ và mã người dùng, nên nó đã được lên kế hoạch phát hành đây là phiên bản 6.0 của ngôn ngữ, cùng với các tính năng chính khác sau đó đang phát triển. [42]

Tuy nhiên, sự thiếu hụt các nhà phát triển hiểu những thay đổi cần thiết và các vấn đề về hiệu suất phát sinh từ việc chuyển đổi sang và từ UTF-16, hiếm khi được sử dụng trong bối cảnh web, dẫn đến sự chậm trễ trong dự án. [43] Kết quả là, bản phát hành PHP & NBSP; 5.3 đã được tạo vào năm 2009, với nhiều tính năng không phải là Unicode được đặt lại từ PHP & NBSP; 6, đáng chú ý là không gian tên. Vào tháng 3 năm 2010, dự án ở dạng hiện tại đã bị từ bỏ chính thức và bản phát hành PHP & NBSP; 5.4 đã được chuẩn bị có chứa hầu hết các tính năng không phải là không đơn lẻ từ PHP & NBSP; 6, chẳng hạn như đặc điểm và đóng lại liên kết lại. [44] Hy vọng ban đầu là một kế hoạch mới sẽ được hình thành để tích hợp Unicode, nhưng đến năm 2014, không có kế hoạch nào được thông qua.

Php 7 [Chỉnh sửa][edit]

Trong năm 2014 và 2015, một phiên bản PHP lớn mới đã được phát triển, PHP & NBSP; 7. Việc đánh số phiên bản này liên quan đến một số cuộc tranh luận giữa các nhà phát triển nội bộ. [45] Trong khi thử nghiệm php & nbsp; 6 Unicode chưa bao giờ được phát hành, một số bài báo và tiêu đề sách đã tham chiếu tên PHP & NBSP; 6, có thể gây ra sự nhầm lẫn nếu một bản phát hành mới sử dụng lại tên. [46] Sau khi bỏ phiếu, tên PHP & NBSP; 7 đã được chọn. [47]

Nền tảng của PHP 7 là một nhánh PHP ban đầu được mệnh danh là Php tiếp theo [PHPNG]. Nó được tác giả bởi Dmitry Stogov, Xinchen Hui và Nikita Popov, [48] và nhằm mục đích tối ưu hóa hiệu suất PHP bằng cách tái cấu trúc động cơ Zend trong khi vẫn giữ được khả năng tương thích ngôn ngữ gần như hoàn chỉnh. [49] Đến ngày 14 tháng 7 năm 2014, các điểm chuẩn dựa trên WordPress, đóng vai trò là bộ điểm chuẩn chính cho dự án PHPNG, cho thấy hiệu suất tăng gần như 100%. Các thay đổi từ PHPNG giúp cải thiện hiệu suất trong các phiên bản trong tương lai dễ dàng hơn, vì các cấu trúc dữ liệu nhỏ gọn hơn và các thay đổi khác được coi là phù hợp hơn để di chuyển thành công sang trình biên dịch chỉ trong thời gian [JIT]. [50] Do những thay đổi đáng kể, động cơ Zend được làm lại được gọi là Zend Engine 3, thành công của Zend Engine 2 được sử dụng trong PHP & NBSP; 5. [51]

Do những thay đổi nội bộ chính trong PHPNG, nó phải nhận được một phiên bản chính mới của PHP, thay vì phát hành PHP & NBSP; 5 nhỏ, theo quy trình phát hành của PHP. [52] Các phiên bản chính của PHP được phép phá vỡ khả năng tương thích ngược của mã và do đó PHP & NBSP; 7 đã tạo cơ hội cho các cải tiến khác ngoài PHPNG yêu cầu phá vỡ khả năng tương thích ngược. Cụ thể, nó liên quan đến các thay đổi sau:

  • Nhiều cơ chế lỗi PHP cũ hoặc có thể phục hồi được thay thế bằng các ngoại lệ hướng đối tượng hiện đại. [53]
  • Cú pháp để thay đổi thay đổi đã được làm lại để phù hợp và đầy đủ hơn trong nội bộ, cho phép sử dụng các toán tử
    
        
    
    
    0 và
    
    
        
            PHP "Hello, World!" program
        
        
            
        
    
    
    1 và ________ 32. [60]
  • Một giám sát cho phép một câu lệnh chuyển đổi có nhiều mệnh đề
    
    
        
            PHP "Hello, World!" program
        
        
            
        
    
    
    3 đã được sửa. [61]
  • Hỗ trợ cho hỗ trợ số thập lục phân trong một số chuyển đổi ngầm từ các chuỗi sang các loại số đã bị xóa. [62]
  • Các nhà khai thác dịch chuyển bên trái và dịch chuyển phải đã được thay đổi để hành xử nhất quán hơn trên các nền tảng. [63]
  • Chuyển đổi giữa các số dấu phẩy động và số nguyên đã được thay đổi [ví dụ: Infinity đã thay đổi thành chuyển đổi thành số 0] và được triển khai nhất quán hơn trên các nền tảng. [63] [64]

Php 7 cũng bao gồm các tính năng ngôn ngữ mới. Đáng chú ý nhất, nó đã giới thiệu các khai báo loại trả về cho các hàm [65] bổ sung cho các khai báo loại tham số hiện có và hỗ trợ cho các loại vô hướng [số nguyên, float, chuỗi và boolean] trong các khai báo tham số và loại trả về. [66]

Php 8 [Chỉnh sửa][edit]

Php 8 được phát hành vào ngày 26 tháng 11 năm 2020. Php 8 là phiên bản chính và đã phá vỡ các thay đổi từ các phiên bản trước. [67] [68] Các tính năng mới và những thay đổi đáng chú ý bao gồm:

Biên dịch chỉ trong thời gian [Chỉnh sửa][edit]

Việc biên dịch đúng lúc được hỗ trợ trong Php 8. [69]

Trình biên dịch JIT của PHP 8 có thể cung cấp các cải tiến hiệu suất đáng kể cho một số trường hợp sử dụng, [70] [71] trong khi nhà phát triển PHP Nikita Popov tuyên bố rằng các cải tiến hiệu suất cho hầu hết các trang web sẽ ít đáng kể hơn so với nâng cấp từ PHP 5 lên PHP 7. [72] Những cải tiến đáng kể được dự kiến ​​sẽ nhiều hơn cho các hoạt động kiểu toán học hơn so với các trường hợp sử dụng phát triển web thông thường. [72] Ngoài ra, trình biên dịch JIT cung cấp tiềm năng trong tương lai để chuyển một số mã từ C sang PHP, do cải thiện hiệu suất cho một số trường hợp sử dụng. [73]

Bổ sung biểu thức khớp [Chỉnh sửa][edit]

Php 8 đã giới thiệu biểu thức



    
        PHP "Hello, World!" program
    
    
        
    

4. [74] Biểu thức trận đấu tương tự về mặt khái niệm với câu lệnh


    
        PHP "Hello, World!" program
    
    
        
    

5 và nhỏ gọn hơn đối với một số trường hợp sử dụng. [75] Vì


    
        PHP "Hello, World!" program
    
    
        
    

4 là một biểu thức, kết quả của nó có thể bị cuốn vào một biến hoặc được trả về từ một hàm. [76]

Loại thay đổi và bổ sung [Chỉnh sửa][edit]

Php 8 đã giới thiệu các loại công đoàn, loại trả về



    
        PHP "Hello, World!" program
    
    
        
    

7 mới và loại


    
        PHP "Hello, World!" program
    
    
        
    

8 mới. [67]

"Các thuộc tính", thường được gọi là "chú thích" trong các ngôn ngữ lập trình khác, đã được thêm vào Php 8, cho phép siêu dữ liệu được thêm vào các lớp. [67]



    
        PHP "Hello, World!" program
    
    
        
    

9 đã được thay đổi từ việc trở thành một tuyên bố thành một biểu thức. [77] Điều này cho phép các ngoại lệ được ném vào những nơi không thể trước đây. [67]

Thay đổi cú pháp và bổ sung [Chỉnh sửa][edit]

Php 8 bao gồm các thay đổi để cho phép các cú pháp thay thế, súc tích hơn hoặc nhất quán hơn trong một số kịch bản. Ví dụ, toán tử nullsafe tương tự như toán tử kết hợp null


0 theo mặc định. Dữ liệu nhận được qua mạng không được chèn trực tiếp vào không gian tên toàn cầu nữa, đóng các lỗ hổng bảo mật có thể có trong các ứng dụng. [86] 4.3 27 tháng 12 năm 2002 [89]Ngày 31 tháng 3 năm 2005 [84]Đã giới thiệu giao diện dòng lệnh [CLI], để bổ sung CGI. [86] [90] 4.4 11 tháng 7 năm 2005 [91]Ngày 7 tháng 8 năm 2008 [84]Đã sửa lỗi tham nhũng bộ nhớ, yêu cầu phá vỡ khả năng tương thích nhị phân với các tiện ích mở rộng được biên dịch với Php phiên bản 4.3.x. [92] 5.0 13 tháng 7 năm 2004 [93]5 tháng 9 năm 2005 [84]Zend Engine II với mô hình đối tượng mới. [94] 5.1 24 tháng 11 năm 2005 [95]24 tháng 8 năm 2006 [84]Cải tiến hiệu suất với giới thiệu các biến trình biên dịch trong động cơ PHP được thiết kế lại. [94] Đã thêm các đối tượng dữ liệu PHP [PDO] làm giao diện nhất quán để truy cập cơ sở dữ liệu. [96] 5.2 Ngày 2 tháng 11 năm 2006 [97]Ngày 6 tháng 1 năm 2011 [84]Bật tiện ích mở rộng bộ lọc theo mặc định. Hỗ trợ JSON bản địa. [94] 5.3 30 tháng 6 năm 2009 [98]14 tháng 8 năm 2014 [84]Hỗ trợ không gian tên; Các ràng buộc tĩnh muộn, nhãn nhảy [giới hạn goto], các chức năng ẩn danh, đóng cửa, lưu trữ PHP [PHAR], thu gom rác cho các tài liệu tham khảo tròn, hỗ trợ Windows được cải thiện , FileInfo thay thế cho MIME_MAGIC để hỗ trợ MIME tốt hơn, mở rộng quốc tế hóa và không khuyến khích mở rộng EREG. 5.4 Ngày 1 tháng 3 năm 2012 [99]Ngày 3 tháng 9 năm 2015 [84]Hỗ trợ đặc điểm, Hỗ trợ Cú pháp ngắn. Các mục đã loại bỏ:

0,

2,

3,

4,

5 và

6. Máy chủ web tích hợp. [100] Một số cải tiến cho các tính năng hiện có, hiệu suất và giảm yêu cầu bộ nhớ. 5.5 20 tháng 6 năm 2013 [101]Ngày 10 tháng 7 năm 2016 [102]Hỗ trợ cho các trình tạo,

7 khối để xử lý ngoại lệ, OPCACHE [dựa trên trình tối ưu hóa Zend+] được gói trong phân phối chính thức. [103] 5.6 28 tháng 8 năm 2014 [104]Ngày 31 tháng 12 năm 2018 [102]Biểu thức vô hướng không đổi, hàm variadic, giải nén đối số, toán tử số mũ mới, phần mở rộng của câu lệnh

8 cho các hàm và hằng số, trình gỡ lỗi

9 mới như một mô -đun SAPI và các cải tiến nhỏ hơn khác. [105]6.xChưa ra mắt-Phiên bản PHP bị bỏ hoang có kế hoạch bao gồm hỗ trợ Unicode gốc. [106] [107] 7.0 Ngày 3 tháng 12 năm 2015 [108]10 tháng 1 năm 2019 [52]Zend Engine 3 [cải thiện hiệu suất [50] và hỗ trợ số nguyên 64 bit trên Windows [109]], Cú pháp biến biến đồng đều, [54] quy trình biên dịch dựa trên AST, [110] đã thêm ____ 60, [111] Tính nhất quán thay đổi bitwise trên các nền tảng, . -toán tử so sánh, [[115] Phái đoàn máy phát, [116] các lớp ẩn danh, [117] đơn giản hơn và có sẵn API CSPRNG, [118] thay thế nhiều "lỗi" PHP nội bộ còn lại bằng các trường hợp ngoại lệ hiện đại hơn, [53] và Cú pháp tốc ký để nhập nhiều mục từ không gian tên. [119] 7.1 Ngày 1 tháng 12 năm 2016Ngày 1 tháng 12 năm 2019 [102]loại trả về loại, [120] các biến đổi khả năng hiển thị không đổi lớp [121] 7.2 Ngày 30 tháng 11 năm 201730 tháng 11 năm 2020 [102]Tham số đối tượng và khai báo loại trả về, [122] mở rộng libsodium, [123] phương pháp trừu tượng, [124] mở rộng loại tham số [125] 7.3 Ngày 6 tháng 12 năm 2018 [126]6 tháng 12 năm 2021HEREDOC linh hoạt và cú pháp NowDoc, [127] Hỗ trợ cho gán tài liệu tham khảo và giải cấu trúc mảng với danh sách [], [128] hỗ trợ PCRE2, [129] HRTIME [] Hàm [130] 7.4 28 tháng 11 năm 2019 [131]28 tháng 11 năm 2022Thuộc tính được đánh máy 2.0, [132] tải trước, [133] toán tử gán khống, [134] cải thiện OPENSSL_RANDOM_PSEUDO_BYTES, [135] Tài liệu tham khảo yếu, [79] FFI & NBSP; ] Mật khẩu băm đăng ký, [138] Chuỗi chuỗi multibyte, [139] Phản xạ cho các tài liệu tham khảo, [140] Giải phóng ext/wddx, [141] Cơ chế tuần tự hóa đối tượng tùy chỉnh mới [142] 8.0 26 tháng 11 năm 2020 [143]26 tháng 11 năm 2023Biên dịch chỉ trong thời gian [JIT], [69] mảng bắt đầu bằng một chỉ số âm, [144] ngữ nghĩa ngôn ngữ nghiêm ngặt hơn/saner [xác nhận cho các phương pháp tính trạng trừu tượng], [145] chuỗi saner với so sánh số, [146] Chuỗi, [147] kiểu trên các toán tử số học/bitwise không hợp lệ, [148] phân loại lại các lỗi động cơ khác nhau, [149] lỗi loại nhất quán cho các hàm bên trong Để chuyển đổi chuỗi, [152] Điều chỉnh cú pháp biến, [153], [154] [155] [156] [157] Các đối số được đặt tên . 8.1 25 tháng 11 năm 2021 [166]25 tháng 11 năm 2024Ký hiệu theo nghĩa đen nguyên vị octal rõ ràng, [167] liệt kê, [168] Thuộc tính đọc, [169] Cú pháp có thể gọi hạng nhất, [170] mới trong các bộ khởi tạo, [171] các loại giao điểm thuần túy, [172] không bao giờ trả về loại, [173] Các ràng buộc lớp cuối cùng, [174] Sợi [175] 8.2 24 tháng 11 năm 2022 [176]24 tháng 11 năm 2025Các lớp đọc, [177] null, sai và đúng dưới dạng các loại độc lập, [178] [179] Chuyển đổi trường hợp độc lập địa phương [180]

Legend:

Phiên bản cũ

Phiên bản cũ hơn, vẫn duy trì

Phiên bản mới nhất

Phiên bản xem trước mới nhất

Phát hành trong tương lai

Bắt đầu từ ngày 28 tháng 6 năm 2011, nhóm phát triển PHP đã thực hiện một dòng thời gian để phát hành các phiên bản mới của PHP. [52] Theo hệ thống này, ít nhất một bản phát hành sẽ xảy ra mỗi tháng. Một lần mỗi năm, một bản phát hành nhỏ sẽ xảy ra có thể bao gồm các tính năng mới. Mỗi bản phát hành nhỏ ít nhất nên được hỗ trợ trong hai năm với các bản sửa lỗi bảo mật và lỗi, tiếp theo là ít nhất một năm chỉ sửa chữa bảo mật, với tổng số quá trình phát hành ba năm cho mỗi bản phát hành nhỏ. Không có tính năng mới, trừ khi nhỏ và khép kín, sẽ được đưa vào một bản phát hành nhỏ trong quá trình phát hành ba năm.

Mascot[edit][edit]

Linh vật Elephpant, PHP

Linh vật của dự án PHP là Elephpant, một con voi xanh với logo PHP ở bên cạnh, được thiết kế bởi Vincent Pontier [181] vào năm 1998. [182] "Các chữ cái [PHP] đã hình thành hình dạng của một con voi nếu nhìn theo góc ngang." [183] ​​Con voi đôi khi có màu khác nhau khi ở dạng đồ chơi sang trọng.

Nhiều biến thể của linh vật này đã được thực hiện trong những năm qua. Chỉ những con voi dựa trên thiết kế ban đầu của Vincent Pontier mới được cộng đồng coi là chính thức. [184] Chúng là có thể sưu tập và một số trong số chúng là cực kỳ hiếm. [185]

Syntax[edit][edit]

Ứng dụng "Hello World" trong Php 7.4 đang chạy trên máy chủ phát triển tích hợp của nó

Sau đây "Xin chào, Thế giới!" Chương trình được viết bằng mã PHP được nhúng trong tài liệu HTML:



    
        PHP "Hello, World!" program
    
    
        
    

Tuy nhiên, vì không có yêu cầu nào tồn tại đối với mã PHP được nhúng trong HTML, phiên bản đơn giản nhất của Hello, World! có thể được viết như thế này, với thẻ đóng

function myAge[int $birthYear]: string
{
    // calculate the age by subtracting the birth year from the current year.
    $yearsOld = date['Y'] - $birthYear;

    // return the age in a descriptive string.
    return $yearsOld . [$yearsOld == 1 ? ' year' : ' years'];
}

echo 'I am currently ' . myAge[1995] . ' old.';
3 được bỏ qua như được ưa thích trong các tệp có chứa mã PHP thuần túy. [186]


Không giống như tên chức năng và tên lớp, tên biến nhạy cảm. Cả hai chuỗi được trích xuất kép [""] và heredoc đều cung cấp khả năng nội suy giá trị của một biến vào chuỗi. [194] PHP coi Newlines là khoảng trắng theo cách của ngôn ngữ dạng tự do và các tuyên bố bị chấm dứt bởi một dấu chấm phẩy. [195] PHP có ba loại Cú pháp bình luận:

function getAdder[$x] {
    return fn[$y] => $x + $y;
}

$adder = getAdder[8];
echo $adder[2];  // prints "10"
2 Điểm khối và ý kiến ​​nội tuyến;
function getAdder[$x] {
    return fn[$y] => $x + $y;
}

$adder = getAdder[8];
echo $adder[2];  // prints "10"
3 hoặc
function getAdder[$x] {
    return fn[$y] => $x + $y;
}

$adder = getAdder[8];
echo $adder[2];  // prints "10"
4 được sử dụng cho các bình luận một dòng. [196] Tuyên bố
function getAdder[$x] {
    return fn[$y] => $x + $y;
}

$adder = getAdder[8];
echo $adder[2];  // prints "10"
5 là một trong một số cơ sở PHP cung cấp cho văn bản đầu ra.

Về từ khóa và cú pháp ngôn ngữ, PHP tương tự như cú pháp kiểu C.

function getAdder[$x] {
    return fn[$y] => $x + $y;
}

$adder = getAdder[8];
echo $adder[2];  // prints "10"
6 Các điều kiện,
function getAdder[$x] {
    return fn[$y] => $x + $y;
}

$adder = getAdder[8];
echo $adder[2];  // prints "10"
7 và
function getAdder[$x] {
    return fn[$y] => $x + $y;
}

$adder = getAdder[8];
echo $adder[2];  // prints "10"
8 Các vòng lặp và lợi nhuận chức năng tương tự nhau trong cú pháp với các ngôn ngữ như C, C ++, C#, Java và Perl.

Kiểu dữ liệu [Chỉnh sửa][edit]

PHP được gõ lỏng lẻo. Nó lưu trữ các số nguyên trong một phạm vi phụ thuộc vào nền tảng, dưới dạng số nguyên có chữ ký 32, 64 hoặc 128 bit tương đương với loại dài ngôn ngữ C. Các số nguyên không dấu được chuyển đổi thành các giá trị đã ký trong một số tình huống nhất định, đó là hành vi khác nhau đối với nhiều ngôn ngữ lập trình khác. [197] Các biến số nguyên có thể được gán bằng số thập phân [dương và âm], octal, thập lục phân và các ký hiệu nhị phân.

Số điểm nổi cũng được lưu trữ trong một phạm vi dành riêng cho nền tảng. Chúng có thể được chỉ định bằng cách sử dụng ký hiệu điểm nổi, hoặc hai dạng ký hiệu khoa học. [198] PHP có loại Boolean gốc tương tự như các loại Boolean bản địa trong Java và C ++. Sử dụng các quy tắc chuyển đổi kiểu Boolean, các giá trị khác không được hiểu là đúng và không là sai, như trong Perl và C ++. [198]

Kiểu dữ liệu null đại diện cho một biến không có giá trị;

function getAdder[$x] {
    return fn[$y] => $x + $y;
}

$adder = getAdder[8];
echo $adder[2];  // prints "10"
9 là giá trị duy nhất cho phép cho loại dữ liệu này. [198]

Các biến của loại "tài nguyên" đại diện cho các tham chiếu đến các tài nguyên từ các nguồn bên ngoài. Chúng thường được tạo bởi các chức năng từ một tiện ích mở rộng cụ thể và chỉ có thể được xử lý bởi các chức năng từ cùng một phần mở rộng; Ví dụ bao gồm tài nguyên tệp, hình ảnh và cơ sở dữ liệu. [198]

Mảng có thể chứa các yếu tố thuộc bất kỳ loại nào mà PHP có thể xử lý, bao gồm tài nguyên, đối tượng và thậm chí các mảng khác. Thứ tự được bảo tồn trong danh sách các giá trị và trong các băm có cả khóa và giá trị, và hai có thể được xen kẽ. [198] PHP cũng hỗ trợ các chuỗi, có thể được sử dụng với các trích dẫn đơn, trích dẫn kép, cú pháp NowDoc hoặc Heredoc. [199]

Thư viện PHP tiêu chuẩn [SPL] cố gắng giải quyết các vấn đề tiêu chuẩn và thực hiện các giao diện và lớp truy cập dữ liệu hiệu quả. [200]Standard PHP Library [SPL] attempts to solve standard problems and implements efficient data access interfaces and classes.[200]

Functions[edit][edit]

PHP xác định một loạt các hàm lớn trong ngôn ngữ cốt lõi và nhiều chức năng cũng có sẵn trong các phần mở rộng khác nhau; Các chức năng này được ghi lại rõ ràng trong tài liệu PHP trực tuyến. [201] Tuy nhiên, thư viện tích hợp có nhiều quy ước đặt tên và sự không nhất quán liên quan, như được mô tả trong lịch sử ở trên.

Các chức năng tùy chỉnh có thể được xác định bởi nhà phát triển:

function myAge[int $birthYear]: string
{
    // calculate the age by subtracting the birth year from the current year.
    $yearsOld = date['Y'] - $birthYear;

    // return the age in a descriptive string.
    return $yearsOld . [$yearsOld == 1 ? ' year' : ' years'];
}

echo 'I am currently ' . myAge[1995] . ' old.';

Tính đến năm 2022, đầu ra của chương trình mẫu trên là "Tôi hiện đang 27 tuổi".

Thay cho các con trỏ chức năng, các chức năng trong PHP có thể được tham chiếu bằng một chuỗi chứa tên của chúng. Theo cách này, các chức năng PHP bình thường có thể được sử dụng, ví dụ, như các cuộc gọi lại hoặc trong các bảng chức năng. [202] Các chức năng do người dùng xác định có thể được tạo bất cứ lúc nào mà không được tạo mẫu. [201] [202] Các chức năng có thể được xác định bên trong các khối mã, cho phép quyết định thời gian chạy về việc có nên xác định chức năng hay không. Có một hàm

function getAdder[int $x]: Closure
{
    return fn[int $y]: int => $x + $y;
}

$adder = getAdder[8];
echo $adder[2]; // prints "10"
echo $adder[null]; // throws an exception because an incorrect type was passed
$adder = getAdder[[]]; // would also throw an exception
0 xác định xem một hàm có tên nhất định có được xác định hay không. Các cuộc gọi chức năng phải sử dụng dấu ngoặc đơn, ngoại trừ các hàm tạo hàm lớp không đối thủ được gọi với toán tử PHP
function getAdder[int $x]: Closure
{
    return fn[int $y]: int => $x + $y;
}

$adder = getAdder[8];
echo $adder[2]; // prints "10"
echo $adder[null]; // throws an exception because an incorrect type was passed
$adder = getAdder[[]]; // would also throw an exception
1, trong trường hợp dấu ngoặc đơn là tùy chọn.

Kể từ PHP & NBSP; 4.0.1

function getAdder[int $x]: Closure
{
    return fn[int $y]: int => $x + $y;
}

$adder = getAdder[8];
echo $adder[2]; // prints "10"
echo $adder[null]; // throws an exception because an incorrect type was passed
$adder = getAdder[[]]; // would also throw an exception
2, một trình bao bọc mỏng xung quanh
function getAdder[int $x]: Closure
{
    return fn[int $y]: int => $x + $y;
}

$adder = getAdder[8];
echo $adder[2]; // prints "10"
echo $adder[null]; // throws an exception because an incorrect type was passed
$adder = getAdder[[]]; // would also throw an exception
3, cho phép tạo các hàm PHP bình thường được tạo trong quá trình thực hiện chương trình; Nó không được dùng trong PHP & NBSP; 7.2 và bị loại bỏ trong PHP & NBSP; 8.0 [203] có lợi cho cú pháp cho các hàm ẩn danh hoặc "đóng" [204] có thể nắm bắt các biến từ phạm vi xung quanh, được thêm vào trong PHP & NBSP; 5.3. Cú pháp mũi tên tốc ký đã được thêm vào trong Php 7.4: [205]

function getAdder[$x] {
    return fn[$y] => $x + $y;
}

$adder = getAdder[8];
echo $adder[2];  // prints "10"

Trong ví dụ trên, hàm

function getAdder[int $x]: Closure
{
    return fn[int $y]: int => $x + $y;
}

$adder = getAdder[8];
echo $adder[2]; // prints "10"
echo $adder[null]; // throws an exception because an incorrect type was passed
$adder = getAdder[[]]; // would also throw an exception
4 tạo ra một đóng bằng cách sử dụng đối số được truyền
function getAdder[int $x]: Closure
{
    return fn[int $y]: int => $x + $y;
}

$adder = getAdder[8];
echo $adder[2]; // prints "10"
echo $adder[null]; // throws an exception because an incorrect type was passed
$adder = getAdder[[]]; // would also throw an exception
5 [từ khóa

8 nhập một biến từ bối cảnh từ vựng], có một đối số bổ sung
function getAdder[int $x]: Closure
{
    return fn[int $y]: int => $x + $y;
}

$adder = getAdder[8];
echo $adder[2]; // prints "10"
echo $adder[null]; // throws an exception because an incorrect type was passed
$adder = getAdder[[]]; // would also throw an exception
7 và trả về việc đóng được tạo cho người gọi. Chức năng như vậy là một đối tượng hạng nhất, có nghĩa là nó có thể được lưu trữ trong một biến, được truyền dưới dạng tham số cho các chức năng khác, v.v. [206]

Bất thường đối với một ngôn ngữ được đánh máy động, PHP hỗ trợ các khai báo loại trên các tham số chức năng, được thực thi trong thời gian chạy. Điều này đã được hỗ trợ cho các lớp và giao diện kể từ PHP & NBSP; 5.0, cho các mảng kể từ PHP & NBSP; 5.1, cho "các loại gọi" kể từ các loại PHP & NBSP; 5.4 và Scalar [Integer, Float, String và Boolean] kể từ Php & NBSP; 7.0. [66] PHP & NBSP; 7.0 cũng có các khai báo loại cho các loại trả về chức năng, được biểu thị bằng cách đặt tên loại sau danh sách các tham số, trước một dấu hai chấm. [65] Ví dụ: hàm

function getAdder[int $x]: Closure
{
    return fn[int $y]: int => $x + $y;
}

$adder = getAdder[8];
echo $adder[2]; // prints "10"
echo $adder[null]; // throws an exception because an incorrect type was passed
$adder = getAdder[[]]; // would also throw an exception
8 từ ví dụ trước có thể được chú thích bằng các loại như vậy trong PHP & NBSP; 7:

function getAdder[int $x]: Closure
{
    return fn[int $y]: int => $x + $y;
}

$adder = getAdder[8];
echo $adder[2]; // prints "10"
echo $adder[null]; // throws an exception because an incorrect type was passed
$adder = getAdder[[]]; // would also throw an exception

Theo mặc định, khai báo loại vô hướng tuân theo các nguyên tắc gõ yếu. Vì vậy, ví dụ, nếu loại tham số là

function getAdder[int $x]: Closure
{
    return fn[int $y]: int => $x + $y;
}

$adder = getAdder[8];
echo $adder[2]; // prints "10"
echo $adder[null]; // throws an exception because an incorrect type was passed
$adder = getAdder[[]]; // would also throw an exception
9, PHP sẽ cho phép không chỉ số nguyên, mà còn các chuỗi số, phao hoặc booleans có thể chuyển đổi được chuyển sang hàm đó và sẽ chuyển đổi chúng. [66] Tuy nhiên, PHP & NBSP; 7 có chế độ "gõ nghiêm ngặt", khi được sử dụng, không cho phép các chuyển đổi đó cho các cuộc gọi chức năng và trả về trong một tệp. [66]

Đối tượng PHP [Chỉnh sửa][edit]

Chức năng lập trình hướng đối tượng cơ bản đã được thêm vào trong PHP & NBSP; 3 và được cải thiện trong PHP & NBSP; 4. [8] Điều này cho phép PHP để có được sự trừu tượng hơn nữa, làm cho các nhiệm vụ sáng tạo dễ dàng hơn cho các lập trình viên sử dụng ngôn ngữ. Xử lý đối tượng đã được viết lại hoàn toàn cho PHP & NBSP; 5, mở rộng bộ tính năng và hiệu suất nâng cao. [207] Trong các phiên bản trước của PHP, các đối tượng được xử lý như các loại giá trị. [207] Hạn chế của phương pháp này là mã phải sử dụng nhiều các biến "tham chiếu" của PHP nếu nó muốn sửa đổi một đối tượng mà nó được truyền thay vì tạo một bản sao của nó. Trong cách tiếp cận mới, các đối tượng được tham chiếu bằng tay cầm, và không phải theo giá trị.

Php 5 đã giới thiệu các biến và phương thức thành viên riêng tư và được bảo vệ, cùng với các lớp trừu tượng, các lớp cuối cùng, phương pháp trừu tượng và phương pháp cuối cùng. Nó cũng giới thiệu một cách tiêu chuẩn để khai báo các hàm tạo và hàm tạo, tương tự như các ngôn ngữ hướng đối tượng khác như C ++ và mô hình xử lý ngoại lệ tiêu chuẩn. Hơn nữa, các giao diện được thêm vào của PHP & NBSP; 5 và cho phép thực hiện nhiều giao diện. Có các giao diện đặc biệt cho phép các đối tượng tương tác với hệ thống thời gian chạy. Các đối tượng thực hiện ArrayAccess có thể được sử dụng với cú pháp mảng và các đối tượng triển khai trình lặp hoặc iteratoraggregate có thể được sử dụng với cấu trúc ngôn ngữ

Bài Viết Liên Quan

Chủ Đề