Hướng dẫn on which platform php runs? - php chạy trên nền tảng nào?

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).

PHP
Hướng dẫn on which platform php runs? - php chạy trên nền tảng nào?
Mô hìnhĐa hình: Bắt buộc, chức năng, hướng đối tượng, thủ tục, phản ánh
Designed byRasmus Lerdorf
Nhà phát triểnNhóm phát triển PHP, Zend Technologies, Foundation PHPPHP Foundation
First appearedTháng 6 & NBSP; 8, 1995; 27 năm trước [1] [2]; 27 years ago[1][2]
Phiên bản ổn định

8.1.12 / 2022-10-27

Bản phát hành xem trước

8.2.0 beta / 2022-07-21

Gõ kỷ luậtNăng động, yếu, dần dần [3]
Ngôn ngữ thực hiệnC (chủ yếu; một số thành phần C ++)
Hệ điều hànhUnix-Like, Windows, MacOS, IBM I, OpenVMS
Giấy phépGiấy phép PHP (hầu hết các động cơ Zend theo giấy phép động cơ Zend)
Phần mở rộng tên tệp________ 11, ________ 12, ________ 13, ________ 14, ________ 15
Trang mạngwww.php.net
Hướng dẫn on which platform php runs? - php chạy trên nền tảng nào?
Triển khai chính
Động cơ zend, hhvm, peachpie, quercus, vẹt
Chịu ảnh hưởng bởi
Perl, HTML, C, C ++, Java, [Cites cần] TCL, [2] JavaScript, Hack [4]citation needed] Tcl,[2] JavaScript, Hack[4]
Ảnh hưởng
Hack, JSP, ASP
  • Hướng dẫn on which platform php runs? - php chạy trên nền tảng nào?
    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!<p>




  Sorry, that record does not exist<p>

  Welcome !<p>
  You have  credits left in your account.<p>


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 phân tích đã đượ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ử
    $human_readable_date = $user->getBirthday()?->diffForHumans();
    
    6,
    $human_readable_date = $user->getBirthday()?->diffForHumans();
    
    7, ________ 18, ________ 19 và
    
    
    namespace App\Enums;
    
    enum InvoiceStatus: string {
        case draft = 'draft';
        case pending = 'pending';
        case paid = 'paid';
        case expired = 'expired';
    }
    
    0, với các biểu thức bên trái có ý nghĩa tùy ý. [54]
  • Hỗ trợ cho các phương pháp xây dựng kiểu PHP & NBSP;
  • Hành vi của câu lệnh
    
    
    namespace App\Enums;
    
    enum InvoiceStatus: string {
        case draft = 'draft';
        case pending = 'pending';
        case paid = 'paid';
        case expired = 'expired';
    }
    
    1 đã được thay đổi thành dễ dự đoán hơn. [56]
  • Các hàm tạo cho một vài lớp được tích hợp cho PHP đã trả lại null khi thất bại đã được thay đổi để ném một ngoại lệ thay thế, cho tính nhất quán. [57]
  • Một số giao diện lập trình ứng dụng máy chủ (SAPIs) không bị loại bỏ hoặc không dùng nữa và các tiện ích mở rộng đã bị xóa khỏi lõi PHP, đáng chú ý nhất là phần mở rộng Legacy
    
    
    namespace App\Enums;
    
    enum InvoiceStatus: string {
        case draft = 'draft';
        case pending = 'pending';
        case paid = 'paid';
        case expired = 'expired';
    }
    
    2. [58]
  • Hành vi của toán tử
    
    
    namespace App\Enums;
    
    enum InvoiceStatus: string {
        case draft = 'draft';
        case pending = 'pending';
        case paid = 'paid';
        case expired = 'expired';
    }
    
    3 đã được thay đổi để loại bỏ hỗ trợ cho các chuỗi. [59]
  • Hỗ trợ đã được gỡ bỏ cho các phân định theo phong cách Legacy ASP
    
    
    namespace App\Enums;
    
    enum InvoiceStatus: string {
        case draft = 'draft';
        case pending = 'pending';
        case paid = 'paid';
        case expired = 'expired';
    }
    
    4 và
    
    
    namespace App\Enums;
    
    enum InvoiceStatus: string {
        case draft = 'draft';
        case pending = 'pending';
        case paid = 'paid';
        case expired = 'expired';
    }
    
    5 và ________ 26. [60]
  • Một giám sát cho phép một câu lệnh chuyển đổi có nhiều mệnh đề
    
    
    namespace App\Enums;
    
    enum InvoiceStatus: string {
        case draft = 'draft';
        case pending = 'pending';
        case paid = 'paid';
        case expired = 'expired';
    }
    
    7 đã đượ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



namespace App\Enums;

enum InvoiceStatus: string {
    case draft = 'draft';
    case pending = 'pending';
    case paid = 'paid';
    case expired = 'expired';
}
8. [74] Biểu thức trận đấu tương tự về mặt khái niệm với câu lệnh


namespace App\Enums;

enum InvoiceStatus: string {
    case draft = 'draft';
    case pending = 'pending';
    case paid = 'paid';
    case expired = 'expired';
}
9 và nhỏ gọn hơn đối với một số trường hợp sử dụng. [75] Vì


namespace App\Enums;

enum InvoiceStatus: string {
    case draft = 'draft';
    case pending = 'pending';
    case paid = 'paid';
    case expired = 'expired';
}
8 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ề


<html>
    <head>
        <title>PHP "Hello, World!" programtitle>
    head>
    <body>
        
            echo '

Hello, World!

'
;
?> body> html>
1 mới và loại

<html>
    <head>
        <title>PHP "Hello, World!" programtitle>
    head>
    <body>
        
            echo '

Hello, World!

'
;
?> body> html>
2 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]


<html>
    <head>
        <title>PHP "Hello, World!" programtitle>
    head>
    <body>
        
            echo '

Hello, World!

'
;
?> body> html>
3 đã đượ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


<html>
    <head>
        <title>PHP "Hello, World!" programtitle>
    head>
    <body>
        
            echo '

Hello, World!

'
;
?> body> html>
4, nhưng được sử dụng khi gọi các phương thức. [78] Đoạn mã sau sẽ không bị lỗi nếu

<html>
    <head>
        <title>PHP "Hello, World!" programtitle>
    head>
    <body>
        
            echo '

Hello, World!

'
;
?> body> html>
5 trả về NULL:

$human_readable_date = $user->getBirthday()?->diffForHumans();

Khuyến khích thuộc tính của hàm tạo đã được thêm vào dưới dạng "đường cú pháp", cho phép các thuộc tính lớp được đặt tự động khi các tham số được chuyển vào hàm tạo lớp. [67] Điều này làm giảm số lượng mã nồi hơi phải được viết.

Các thay đổi nhỏ khác bao gồm hỗ trợ sử dụng


<html>
    <head>
        <title>PHP "Hello, World!" programtitle>
    head>
    <body>
        
            echo '

Hello, World!

'
;
?> body> html>
6 trên các đối tượng, đóng vai trò thay thế cho việc sử dụng ________ 37; [67] bắt không bắt giữ trong các khối thử thử; Điều chỉnh cú pháp biến để giải quyết sự không nhất quán; Hỗ trợ cho các đối số được đặt tên; và hỗ trợ cho dấu phẩy trong danh sách tham số, điều này bổ sung tính nhất quán với sự hỗ trợ cho dấu phẩy trong các bối cảnh khác, chẳng hạn như trong các mảng.

Thay đổi và bổ sung thư viện tiêu chuẩn [Chỉnh sửa][edit]

  • Các bản đồ yếu đã được thêm vào trong Php 8. A
    
    <html>
        <head>
            <title>PHP "Hello, World!" programtitle>
        head>
        <body>
            
                echo '

    Hello, World!

    '
    ;
    ?> body> html>
    8 giữ các tham chiếu đến các đối tượng, nhưng các tài liệu tham khảo này không ngăn các đối tượng đó được thu thập rác. [79] Điều này có thể cung cấp các cải tiến hiệu suất trong các kịch bản trong đó dữ liệu đang được lưu trữ; Điều này có liên quan đặc biệt đến ánh xạ quan hệ đối tượng (ORM). [67]
  • Các điều chỉnh khác nhau đối với các giao diện, chẳng hạn như thêm hỗ trợ để tạo các đối tượng
    
    <html>
        <head>
            <title>PHP "Hello, World!" programtitle>
        head>
        <body>
            
                echo '

    Hello, World!

    '
    ;
    ?> body> html>
    9 từ các giao diện và bổ sung giao diện
     echo 'Hello, World!';
    
    0 có thể được sử dụng để đánh dấu loại.
  • Các hàm mới khác nhau bao gồm str_contains (), str_starts_with () và str_ends_with (); [80] fdiv (); get_debug_type (); và get_resource_id ()
  • Thực hiện đối tượng của token_get_all ()

Thay đổi bổ sung [Chỉnh sửa][edit]

  • Các chú thích loại cũng được thêm vào mã nguồn C của PHP để cho phép các hàm và phương pháp nội bộ có "thông tin loại hoàn chỉnh trong phản ánh." [81]
  • Kế thừa bằng các phương pháp riêng tư
  • Phương pháp trừu tượng trong cải thiện đặc điểm

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

Php 8.1 đã được phát hành vào ngày 25 tháng 11 năm 2021. Nó bao gồm một số cải tiến, chẳng hạn như liệt kê (còn được gọi là "Enums"), các thuộc tính đọc và mảng giải nén bằng các khóa chuỗi. [82]

Hỗ trợ liệt kê [Chỉnh sửa][edit]

Hỗ trợ cho việc liệt kê là một trong những tính năng nổi bật nhất của Php 8.1. [83] Enums cho phép các nhà phát triển thực thi các quốc gia trong cơ sở mã của họ. Dưới đây là một ví dụ về enum:



namespace App\Enums;

enum InvoiceStatus: string {
    case draft = 'draft';
    case pending = 'pending';
    case paid = 'paid';
    case expired = 'expired';
}

Các tính năng PHP 8.1 khác [Chỉnh sửa][edit]

  • Hỗ trợ cho các thuộc tính `readonly` đã được thêm vào.
  • Sau khi giới thiệu mảng giải nén trong PHP 7.4 với các khóa được đánh số liên tiếp, PHP 8.1 đã giới thiệu hỗ trợ cho mảng giải nén với các khóa chuỗi.
  • Php 8.1 đã thêm hỗ trợ cho việc sử dụng `new` trong các bộ khởi tạo.
  • Một cú pháp mới đã được thêm vào để tạo các thiết bị gọi.
  • Php 8.1 mang lại sự hỗ trợ cho các loại giao điểm thuần túy, sau khi giới thiệu các loại liên minh trong Php 8.0.

Phát hành Lịch sử [Chỉnh sửa][edit]

Phiên bảnNgày phát hànhĐược hỗ trợ cho đến [84]Ghi chú
1.0 8 tháng 6 năm 1995 Chính thức được gọi là "Công cụ trang chủ cá nhân (Công cụ PHP)". Đây là cách sử dụng đầu tiên của tên "PHP". [8]
2.0 Ngày 1 tháng 11 năm 1997 Chính thức gọi là "PHP/FI 2.0". Đây là bản phát hành đầu tiên thực sự có thể được đặc trưng là PHP, là ngôn ngữ độc lập với nhiều tính năng đã chịu đựng cho đến ngày nay.
3.0 6 tháng 6 năm 199820 tháng 10 năm 2000 [84]Phát triển chuyển từ một người sang nhiều nhà phát triển. Zeev Suraski và Andi Gutmans viết lại cơ sở cho phiên bản này. [8]
4.0 22 tháng 5 năm 2000 [85]23 tháng 6 năm 2001 [84]Đã thêm hệ thống phân tích thẻ Parse/thực thi hai giai đoạn nâng cao hơn được gọi là Zend Engine. [86]
4.1 10 tháng 12 năm 2001 [87]Ngày 12 tháng 3 năm 2002 [84]Đã giới thiệu "Superglobals" (
 echo 'Hello, World!';
1,
 echo 'Hello, World!';
2,
 echo 'Hello, World!';
3, v.v.) [86]
4.2 22 tháng 4 năm 2002 [88]Ngày 6 tháng 9 năm 2002 [84]Đã vô hiệu hóa
 echo 'Hello, World!';
4 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ỏ:
 echo 'Hello, World!';
4,
 echo 'Hello, World!';
6,
 echo 'Hello, World!';
7,
 echo 'Hello, World!';
8,
 echo 'Hello, World!';
9 và

    $name = 'John';  // variable of string type being declared and initialized
    $age = 18;       // variable of integer type being declared and initialized
    $height = 5.3;   // variable of double type being declared and initialized
    echo $name . ' is ' . $height . "m tall\n"; // concatenating variables and strings
    echo "$name is $age years old."; // interpolating variables to string
?>
0. 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,

    $name = 'John';  // variable of string type being declared and initialized
    $age = 18;       // variable of integer type being declared and initialized
    $height = 5.3;   // variable of double type being declared and initialized
    echo $name . ' is ' . $height . "m tall\n"; // concatenating variables and strings
    echo "$name is $age years old."; // interpolating variables to string
?>
1 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]Các biểu thức vô hướng không đổi, các 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

    $name = 'John';  // variable of string type being declared and initialized
    $age = 18;       // variable of integer type being declared and initialized
    $height = 5.3;   // variable of double type being declared and initialized
    echo $name . ' is ' . $height . "m tall\n"; // concatenating variables and strings
    echo "$name is $age years old."; // interpolating variables to string
?>
2 cho các hàm và hằng số, trình gỡ lỗi

    $name = 'John';  // variable of string type being declared and initialized
    $age = 18;       // variable of integer type being declared and initialized
    $height = 5.3;   // variable of double type being declared and initialized
    echo $name . ' is ' . $height . "m tall\n"; // concatenating variables and strings
    echo "$name is $age years old."; // interpolating variables to string
?>
3 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 tiế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 ____ 54, [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]

Hướng dẫn on which platform php runs? - php chạy trên nền tảng nào?

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]

Hướng dẫn on which platform php runs? - php chạy trên nền tảng nào?

Ứ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:


<html>
    <head>
        <title>PHP "Hello, World!" programtitle>
    head>
    <body>
        
            echo '

Hello, World!

'
;
?> body> html>

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


    $name = 'John';  // variable of string type being declared and initialized
    $age = 18;       // variable of integer type being declared and initialized
    $height = 5.3;   // variable of double type being declared and initialized
    echo $name . ' is ' . $height . "m tall\n"; // concatenating variables and strings
    echo "$name is $age years old."; // interpolating variables to string
?>
7 được bỏ qua như được ưa thích trong các tệp có chứa mã PHP thuần túy. [186]

 echo 'Hello, World!';

Trình thông dịch PHP chỉ thực thi mã PHP trong các trình phân cách của nó. Bất cứ điều gì bên ngoài các phân định của nó không được xử lý bởi PHP, mặc dù văn bản không phải Php vẫn phải chịu sự kiểm soát các cấu trúc được mô tả trong mã PHP. Các phân định phổ biến nhất là


    $name = 'John';  // variable of string type being declared and initialized
    $age = 18;       // variable of integer type being declared and initialized
    $height = 5.3;   // variable of double type being declared and initialized
    echo $name . ' is ' . $height . "m tall\n"; // concatenating variables and strings
    echo "$name is $age years old."; // interpolating variables to string
?>
8 để mở và

    $name = 'John';  // variable of string type being declared and initialized
    $age = 18;       // variable of integer type being declared and initialized
    $height = 5.3;   // variable of double type being declared and initialized
    echo $name . ' is ' . $height . "m tall\n"; // concatenating variables and strings
    echo "$name is $age years old."; // interpolating variables to string
?>
7 để đóng các phần PHP. Hình thức rút ngắ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.';
0 cũng tồn tại. Phân đoạn ngắn này làm cho các tệp script ít hoạt động hơn, vì hỗ trợ cho chúng có thể bị vô hiệu hóa trong cấu hình PHP cục bộ và do đó nó không được khuyến khích. [187] [188] Ngược lại, không có khuyến nghị nào đối với thẻ ngắn Echo ________ 61. [189] Trước PHP & NBSP; 5.4.0, cú pháp ngắn này cho
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.';
2 chỉ hoạt động với cài đặt cấu hình
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ật, trong khi đối với PHP & NBSP; 5.4.0 và sau đó luôn có sẵn. [190] [191] [187] Mục đích của tất cả các dấu phân cách này là tách mã PHP khỏi nội dung không phải Php, chẳng hạn như mã JavaScript hoặc đánh dấu HTML. [192] Vì vậy, ngắn nhất "Xin chào, thế giới!" Chương trình được viết bằng PHP là:

Hình thức phân định đầu tiên,


    $name = 'John';  // variable of string type being declared and initialized
    $age = 18;       // variable of integer type being declared and initialized
    $height = 5.3;   // variable of double type being declared and initialized
    echo $name . ' is ' . $height . "m tall\n"; // concatenating variables and strings
    echo "$name is $age years old."; // interpolating variables to string
?>
8 và

    $name = 'John';  // variable of string type being declared and initialized
    $age = 18;       // variable of integer type being declared and initialized
    $height = 5.3;   // variable of double type being declared and initialized
    echo $name . ' is ' . $height . "m tall\n"; // concatenating variables and strings
    echo "$name is $age years old."; // interpolating variables to string
?>
7, trong XHTML và các tài liệu XML khác, tạo ra các hướng dẫn xử lý XML được hình thành chính xác. [193] Điều này có nghĩa là hỗn hợp kết quả của mã PHP và đánh dấu khác trong tệp phía máy chủ tự nó được hình thành tốt XML.

Các biến được tiền tố với ký hiệu đô la và một loại không cần phải được chỉ định trước. PHP & NBSP; Tuy nhiên, trước PHP & NBSP; 7, không thể sử dụng khai báo loại với các loại vô hướng như số nguyên hoặc chuỗi. [66]

Dưới đây là một ví dụ về cách các biến PHP được khai báo và khởi tạo.


    $name = 'John';  // variable of string type being declared and initialized
    $age = 18;       // variable of integer type being declared and initialized
    $height = 5.3;   // variable of double type being declared and initialized
    echo $name . ' is ' . $height . "m tall\n"; // concatenating variables and strings
    echo "$name is $age years old."; // interpolating variables to string
?>

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 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.';
6 Dấu hiệu bình luận khối và nội tuyế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.';
7 hoặc
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.';
8 được sử dụng cho các bình luận một dòng. [196] Tuyên bố
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.';
9 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"
0 Các điều kiện,
function getAdder($x) {
    return fn($y) => $x + $y;
}

$adder = getAdder(8);
echo $adder(2);  // prints "10"
1 và
function getAdder($x) {
    return fn($y) => $x + $y;
}

$adder = getAdder(8);
echo $adder(2);  // prints "10"
2 và trả về 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"
3 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($x) {
    return fn($y) => $x + $y;
}

$adder = getAdder(8);
echo $adder(2);  // prints "10"
4 xác định xem một hàm có tên đã cho đã được xác định. 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($x) {
    return fn($y) => $x + $y;
}

$adder = getAdder(8);
echo $adder(2);  // prints "10"
5, trong trường hợp dấu ngoặc đơn là tùy chọn.

Kể từ PHP & NBSP; 4.0.1

function getAdder($x) {
    return fn($y) => $x + $y;
}

$adder = getAdder(8);
echo $adder(2);  // prints "10"
6, một trình bao bọc mỏng xung quanh
function getAdder($x) {
    return fn($y) => $x + $y;
}

$adder = getAdder(8);
echo $adder(2);  // prints "10"
7, 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($x) {
    return fn($y) => $x + $y;
}

$adder = getAdder(8);
echo $adder(2);  // prints "10"
8 tạo ra một đóng bằng cách sử dụng đối số được truyền
function getAdder($x) {
    return fn($y) => $x + $y;
}

$adder = getAdder(8);
echo $adder(2);  // prints "10"
9 (từ khóa

    $name = 'John';  // variable of string type being declared and initialized
    $age = 18;       // variable of integer type being declared and initialized
    $height = 5.3;   // variable of double type being declared and initialized
    echo $name . ' is ' . $height . "m tall\n"; // concatenating variables and strings
    echo "$name is $age years old."; // interpolating variables to string
?>
2 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
1 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
2 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
3, 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ữ



namespace App\Enums;

enum InvoiceStatus: string {
    case draft = 'draft';
    case pending = 'pending';
    case paid = 'paid';
    case expired = 'expired';
}
1. Không có tính năng bảng ảo trong động cơ, vì vậy các biến tĩnh được liên kết với tên thay vì tham chiếu tại thời điểm biên dịch. [208]

Nếu nhà phát triển tạo một bản sao của một đối tượng bằng cách sử dụng từ dành riêng

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, động cơ Zend sẽ kiểm tra xem phương thức
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
6 có được xác định hay không. Nếu không, nó sẽ gọi một mặc định
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
6 sẽ sao chép các thuộc tính của đối tượng. Nếu phương thức
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
6 được xác định, thì nó sẽ chịu trách nhiệm đặt các thuộc tính cần thiết trong đối tượng được tạo. Để thuận tiện, động cơ sẽ cung cấp một hàm nhập các thuộc tính của đối tượng nguồn, do đó, lập trình viên có thể bắt đầu với bản sao giá trị của đối tượng nguồn và chỉ ghi đè các thuộc tính cần thay đổi. [209]

Khả năng hiển thị của các thuộc tính và phương thức PHP được xác định bằng cách sử dụng các từ khóa

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,


abstract class User
{
    protected string $name;

    public function __construct(string $name)
    {
        // make first letter uppercase and the rest lowercase
        $this->name = ucfirst(strtolower($name));
    }

    public function greet(): string
    {
        return "Hello, my name is " . $this->name;
    }

    abstract public function job(): string;
}

class Student extends User
{
    public function __construct(string $name, private string $course)
    {
        parent::__construct($name);
    }

    public function job(): string
    {
        return "I learn " . $this->course;
    }
}

class Teacher extends User
{
    public function __construct(string $name, private array $teachingCourses)
    {
        parent::__construct($name);
    }

    public function job(): string
    {
        return "I teach " . implode(", ", $this->teachingCourses);
    }
}

$students = [
    new Student("Alice", "Computer Science"),
    new Student("Bob", "Computer Science"),
    new Student("Charlie", "Business Studies"),
];

$teachers = [
    new Teacher("Dan", ["Computer Science", "Information Security"]),
    new Teacher("Erin", ["Computer Science", "3D Graphics Programming"]),
    new Teacher("Frankie", ["Online Marketing", "Business Studies", "E-commerce"]),
];

foreach ([$students, $teachers] as $users) {
    echo $users[0]::class . "s:\n";

    array_walk($users, function (User $user) {
        echo "{$user->greet()}, {$user->job()}\n";
    });
}
0 và


abstract class User
{
    protected string $name;

    public function __construct(string $name)
    {
        // make first letter uppercase and the rest lowercase
        $this->name = ucfirst(strtolower($name));
    }

    public function greet(): string
    {
        return "Hello, my name is " . $this->name;
    }

    abstract public function job(): string;
}

class Student extends User
{
    public function __construct(string $name, private string $course)
    {
        parent::__construct($name);
    }

    public function job(): string
    {
        return "I learn " . $this->course;
    }
}

class Teacher extends User
{
    public function __construct(string $name, private array $teachingCourses)
    {
        parent::__construct($name);
    }

    public function job(): string
    {
        return "I teach " . implode(", ", $this->teachingCourses);
    }
}

$students = [
    new Student("Alice", "Computer Science"),
    new Student("Bob", "Computer Science"),
    new Student("Charlie", "Business Studies"),
];

$teachers = [
    new Teacher("Dan", ["Computer Science", "Information Security"]),
    new Teacher("Erin", ["Computer Science", "3D Graphics Programming"]),
    new Teacher("Frankie", ["Online Marketing", "Business Studies", "E-commerce"]),
];

foreach ([$students, $teachers] as $users) {
    echo $users[0]::class . "s:\n";

    array_walk($users, function (User $user) {
        echo "{$user->greet()}, {$user->job()}\n";
    });
}
1. Mặc định là công khai, nếu chỉ sử dụng VAR;


abstract class User
{
    protected string $name;

    public function __construct(string $name)
    {
        // make first letter uppercase and the rest lowercase
        $this->name = ucfirst(strtolower($name));
    }

    public function greet(): string
    {
        return "Hello, my name is " . $this->name;
    }

    abstract public function job(): string;
}

class Student extends User
{
    public function __construct(string $name, private string $course)
    {
        parent::__construct($name);
    }

    public function job(): string
    {
        return "I learn " . $this->course;
    }
}

class Teacher extends User
{
    public function __construct(string $name, private array $teachingCourses)
    {
        parent::__construct($name);
    }

    public function job(): string
    {
        return "I teach " . implode(", ", $this->teachingCourses);
    }
}

$students = [
    new Student("Alice", "Computer Science"),
    new Student("Bob", "Computer Science"),
    new Student("Charlie", "Business Studies"),
];

$teachers = [
    new Teacher("Dan", ["Computer Science", "Information Security"]),
    new Teacher("Erin", ["Computer Science", "3D Graphics Programming"]),
    new Teacher("Frankie", ["Online Marketing", "Business Studies", "E-commerce"]),
];

foreach ([$students, $teachers] as $users) {
    echo $users[0]::class . "s:\n";

    array_walk($users, function (User $user) {
        echo "{$user->greet()}, {$user->job()}\n";
    });
}
2 là một từ đồng nghĩa với
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. Các mục được tuyên bố
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 có thể được truy cập ở mọi nơi.


abstract class User
{
    protected string $name;

    public function __construct(string $name)
    {
        // make first letter uppercase and the rest lowercase
        $this->name = ucfirst(strtolower($name));
    }

    public function greet(): string
    {
        return "Hello, my name is " . $this->name;
    }

    abstract public function job(): string;
}

class Student extends User
{
    public function __construct(string $name, private string $course)
    {
        parent::__construct($name);
    }

    public function job(): string
    {
        return "I learn " . $this->course;
    }
}

class Teacher extends User
{
    public function __construct(string $name, private array $teachingCourses)
    {
        parent::__construct($name);
    }

    public function job(): string
    {
        return "I teach " . implode(", ", $this->teachingCourses);
    }
}

$students = [
    new Student("Alice", "Computer Science"),
    new Student("Bob", "Computer Science"),
    new Student("Charlie", "Business Studies"),
];

$teachers = [
    new Teacher("Dan", ["Computer Science", "Information Security"]),
    new Teacher("Erin", ["Computer Science", "3D Graphics Programming"]),
    new Teacher("Frankie", ["Online Marketing", "Business Studies", "E-commerce"]),
];

foreach ([$students, $teachers] as $users) {
    echo $users[0]::class . "s:\n";

    array_walk($users, function (User $user) {
        echo "{$user->greet()}, {$user->job()}\n";
    });
}
1 giới hạn quyền truy cập vào các lớp kế thừa (và cho lớp xác định mục).


abstract class User
{
    protected string $name;

    public function __construct(string $name)
    {
        // make first letter uppercase and the rest lowercase
        $this->name = ucfirst(strtolower($name));
    }

    public function greet(): string
    {
        return "Hello, my name is " . $this->name;
    }

    abstract public function job(): string;
}

class Student extends User
{
    public function __construct(string $name, private string $course)
    {
        parent::__construct($name);
    }

    public function job(): string
    {
        return "I learn " . $this->course;
    }
}

class Teacher extends User
{
    public function __construct(string $name, private array $teachingCourses)
    {
        parent::__construct($name);
    }

    public function job(): string
    {
        return "I teach " . implode(", ", $this->teachingCourses);
    }
}

$students = [
    new Student("Alice", "Computer Science"),
    new Student("Bob", "Computer Science"),
    new Student("Charlie", "Business Studies"),
];

$teachers = [
    new Teacher("Dan", ["Computer Science", "Information Security"]),
    new Teacher("Erin", ["Computer Science", "3D Graphics Programming"]),
    new Teacher("Frankie", ["Online Marketing", "Business Studies", "E-commerce"]),
];

foreach ([$students, $teachers] as $users) {
    echo $users[0]::class . "s:\n";

    array_walk($users, function (User $user) {
        echo "{$user->greet()}, {$user->job()}\n";
    });
}
0 Chỉ giới hạn khả năng hiển thị đối với lớp xác định mục. [210] Các đối tượng cùng loại có quyền truy cập vào các thành viên riêng tư và được bảo vệ của nhau mặc dù chúng không phải là cùng một trường hợp.

Example[edit][edit]

Sau đây là một ví dụ cơ bản về lập trình hướng đối tượng trong Php 8:



abstract class User
{
    protected string $name;

    public function __construct(string $name)
    {
        // make first letter uppercase and the rest lowercase
        $this->name = ucfirst(strtolower($name));
    }

    public function greet(): string
    {
        return "Hello, my name is " . $this->name;
    }

    abstract public function job(): string;
}

class Student extends User
{
    public function __construct(string $name, private string $course)
    {
        parent::__construct($name);
    }

    public function job(): string
    {
        return "I learn " . $this->course;
    }
}

class Teacher extends User
{
    public function __construct(string $name, private array $teachingCourses)
    {
        parent::__construct($name);
    }

    public function job(): string
    {
        return "I teach " . implode(", ", $this->teachingCourses);
    }
}

$students = [
    new Student("Alice", "Computer Science"),
    new Student("Bob", "Computer Science"),
    new Student("Charlie", "Business Studies"),
];

$teachers = [
    new Teacher("Dan", ["Computer Science", "Information Security"]),
    new Teacher("Erin", ["Computer Science", "3D Graphics Programming"]),
    new Teacher("Frankie", ["Online Marketing", "Business Studies", "E-commerce"]),
];

foreach ([$students, $teachers] as $users) {
    echo $users[0]::class . "s:\n";

    array_walk($users, function (User $user) {
        echo "{$user->greet()}, {$user->job()}\n";
    });
}

Chương trình này xuất bản như sau:

$human_readable_date = $user->getBirthday()?->diffForHumans();
0

Implementations[edit][edit]

Việc triển khai PHP hoàn chỉnh duy nhất là bản gốc, được gọi đơn giản là PHP. Nó được sử dụng rộng rãi nhất và được cung cấp bởi động cơ Zend. Để phân loại nó khỏi các triển khai khác, đôi khi nó được gọi là "Zend PHP". Zend Engine biên dịch mã nguồn PHP trên định dạng nội bộ mà nó có thể thực thi, do đó nó hoạt động như một trình thông dịch. [211] [212] Đây cũng là "triển khai tham chiếu" của PHP, vì PHP không có đặc điểm kỹ thuật chính thức, và do đó, ngữ nghĩa của zend PHP xác định ngữ nghĩa của PHP. Do ngữ nghĩa phức tạp và sắc thái của PHP, được xác định bởi cách thức hoạt động của Zend, rất khó để các triển khai cạnh tranh để cung cấp khả năng tương thích hoàn toàn.

Mô hình thực hiện một kịch bản đơn của PHP và thực tế là động cơ Zend là một trình thông dịch, dẫn đến không hiệu quả; Do đó, các sản phẩm khác nhau đã được phát triển để giúp cải thiện hiệu suất PHP. Để tăng tốc độ thời gian thực hiện và không phải biên dịch mã nguồn PHP mỗi khi trang web được truy cập, các tập lệnh PHP cũng có thể được triển khai ở định dạng nội bộ của động cơ PHP bằng cách sử dụng bộ đệm opcode, hoạt động bằng cách lưu trữ dạng được biên dịch của Một tập lệnh PHP (opcodes) trong bộ nhớ được chia sẻ để tránh chi phí phân tích cú pháp và biên dịch mã mỗi khi tập lệnh chạy. Bộ đệm Opcode, Zend Opcache, được tích hợp vào PHP kể từ phiên bản 5.5. [213] Một ví dụ khác về bộ đệm opcode được sử dụng rộng rãi là bộ đệm PHP thay thế (APC), có sẵn dưới dạng tiện ích mở rộng PECL. [214]

Trong khi Zend PHP vẫn là triển khai phổ biến nhất, một số triển khai khác đã được phát triển. Một số trong số này là trình biên dịch hoặc biên dịch JIT hỗ trợ, và do đó mang lại lợi ích hiệu suất so với Zend PHP với chi phí thiếu khả năng tương thích PHP đầy đủ. Các triển khai thay thế bao gồm các vấn đề sau:

  • HHVM (Máy ảo HiPHop) & NBSP;-Được phát triển tại Facebook và có sẵn dưới dạng nguồn mở, nó chuyển đổi mã PHP thành mã byte cấp cao (thường được gọi là ngôn ngữ trung gian), sau đó được dịch thành mã máy x86-64 tại thời gian chạy. bằng trình biên dịch chỉ trong thời gian (JIT), dẫn đến cải thiện hiệu suất lên tới 6 ×. [215] Tuy nhiên, vì phiên bản 7.2 Zend đã vượt trội hơn HHVM, [216] và HHVM 3.24 là phiên bản cuối cùng hỗ trợ chính thức PHP. [217]
    • HiPHOP & NBSP; - Được phát triển tại Facebook và có sẵn dưới dạng nguồn mở, nó chuyển đổi các tập lệnh PHP thành mã C ++ và sau đó biên dịch mã kết quả, giảm tải máy chủ lên tới 50%. Đầu năm 2013, Facebook đã phản đối nó có lợi cho HHVM vì nhiều lý do, bao gồm các khó khăn triển khai và thiếu hỗ trợ cho toàn bộ ngôn ngữ PHP, bao gồm các cấu trúc
      function getAdder($x) {
          return fn($y) => $x + $y;
      }
      
      $adder = getAdder(8);
      echo $adder(2);  // prints "10"
      
      6 và
      function getAdder($x) {
          return fn($y) => $x + $y;
      }
      
      $adder = getAdder(8);
      echo $adder(2);  // prints "10"
      
      7. [218]
  • Parrot & nbsp; - Một máy ảo được thiết kế để chạy các ngôn ngữ động một cách hiệu quả; PIPP bộ chuyển giao chéo chuyển đổi mã nguồn PHP thành đại diện trung gian vẹt, sau đó được dịch thành mã byte của vẹt và được thực hiện bởi máy ảo.
  • PeachPie-Trình biên dịch thế hệ thứ hai cho .NET Ngôn ngữ trung gian phổ biến (CIL), được xây dựng trên nền tảng Roslyn; kế thừa của Phalanger, chia sẻ một số thành phần kiến ​​trúc
  • Phalanger & nbsp; - Biên dịch PHP vào .NET mã byte ngôn ngữ trung gian phổ biến; tiền thân của Peachpie
  • Quercus & nbsp; - Biên dịch PHP vào mã byte Java

Licensing[edit][edit]

PHP là phần mềm miễn phí được phát hành theo giấy phép PHP, quy định rằng: [219]

Các sản phẩm có nguồn gốc từ phần mềm này có thể không được gọi là "PHP", cũng không thể "PHP" xuất hiện trong tên của họ, mà không có sự cho phép trước bằng văn bản. Bạn có thể chỉ ra rằng phần mềm của bạn hoạt động cùng với PHP bằng cách nói "foo cho PHP" thay vì gọi nó là "PHP foo" hoặc "phpfoo".

Hạn chế này đối với việc sử dụng "PHP" làm cho giấy phép PHP không tương thích với Giấy phép công cộng chung (GPL), trong khi giấy phép Zend không tương thích do điều khoản quảng cáo tương tự như giấy phép BSD ban đầu. [220]

Phát triển và cộng đồng [chỉnh sửa][edit]

PHP bao gồm các thư viện nguồn miễn phí và nguồn mở khác nhau trong phân phối nguồn của nó hoặc sử dụng chúng trong các bản dựng nhị phân PHP. PHP về cơ bản là một hệ thống nhận thức Internet với các mô-đun tích hợp để truy cập các máy chủ giao thức truyền tệp (FTP) và nhiều máy chủ cơ sở dữ liệu, bao gồm PostgreSQL, MySQL, Microsoft SQL Server và SQLite (là cơ sở dữ liệu nhúng) . Nhiều chức năng quen thuộc với các lập trình viên C.

PHP cho phép các nhà phát triển viết các tiện ích mở rộng trong C để thêm chức năng vào ngôn ngữ PHP. Các tiện ích mở rộng PHP có thể được biên dịch tĩnh thành PHP hoặc được tải động trong thời gian chạy. Nhiều tiện ích mở rộng đã được viết để thêm hỗ trợ cho API Windows, Quản lý quy trình trên các hệ điều hành giống UNIX, Chuỗi Multibyte (Unicode), Curl và một số định dạng nén phổ biến. Các tính năng PHP khác có sẵn thông qua các tiện ích mở rộng bao gồm tích hợp với Chat Relay Chat (IRC), tạo hình ảnh động và nội dung flash adobe, đối tượng dữ liệu PHP (PDO) như một lớp trừu tượng được sử dụng để truy cập cơ sở dữ liệu, [222] [223] [224] [225] [226] [227] [228] và thậm chí tổng hợp lời nói. Một số chức năng cốt lõi của ngôn ngữ, chẳng hạn như các chức năng xử lý các chuỗi và mảng, cũng được thực hiện dưới dạng phần mở rộng. [229] Dự án Thư viện Cộng đồng mở rộng PHP (PECL) là một kho lưu trữ cho các phần mở rộng cho ngôn ngữ PHP. [230]

Một số dự án khác, chẳng hạn như Zephir, cung cấp khả năng mở rộng PHP được tạo bằng ngôn ngữ cấp cao và được biên dịch thành các phần mở rộng PHP gốc. Cách tiếp cận như vậy, thay vì viết các phần mở rộng PHP trực tiếp trong C, đơn giản hóa việc phát triển các phần mở rộng và giảm thời gian cần thiết để lập trình và thử nghiệm. [231]

Đến tháng 12 năm 2018, nhóm PHP bao gồm mười người: Thies C. Arntzen, Stig Bakken, Shane Caraveo, Andi Gutmans, Rasmus Lerdorf, Sam Ruby, Sascha Schumann, Zeev Suraski, Jim Winstead và Andrei Zmiev.

Zend Technologies cung cấp chứng nhận PHP dựa trên kỳ thi PHP & NBSP; 7 [233] (và trước đây dựa trên PHP & NBSP; 5.5) để các lập trình viên trở thành nhà phát triển PHP được chứng nhận.

PHP Foundation [Chỉnh sửa][edit]

Vào ngày 26 tháng 11 năm 2021, Blog JetBrains đã công bố thành lập Quỹ PHP, nơi sẽ tài trợ cho việc thiết kế và phát triển PHP. [234]

Cài đặt và cấu hình [Chỉnh sửa][edit]

Hướng dẫn on which platform php runs? - php chạy trên nền tảng nào?

Ví dụ đầu ra của hàm phpinfo () trong PHP 7.1

Có hai cách chính để thêm hỗ trợ cho PHP vào máy chủ web & nbsp; - như một mô -đun máy chủ web gốc hoặc là một CGI có thể thực thi. PHP có giao diện mô -đun trực tiếp được gọi là Giao diện lập trình ứng dụng máy chủ (SAPI), được hỗ trợ bởi nhiều máy chủ web bao gồm Apache HTTP Server, Microsoft IIS và IPLANET Web Server. Một số máy chủ web khác, chẳng hạn như OMNIHTTPD, hỗ trợ giao diện lập trình ứng dụng máy chủ Internet (ISAPI), là giao diện mô -đun máy chủ web của Microsoft. Nếu PHP không có hỗ trợ mô -đun cho máy chủ web, nó luôn có thể được sử dụng làm giao diện cổng thông thường (CGI) hoặc bộ xử lý FASTCGI; Trong trường hợp đó, máy chủ web được cấu hình để sử dụng thực thi CGI của PHP để xử lý tất cả các yêu cầu cho các tệp PHP. [235]

PHP-FPM (Trình quản lý quy trình FASTCGI) là triển khai FASTCGI thay thế cho PHP, được gói với phân phối PHP chính thức kể từ phiên bản 5.3.3. [236] Khi so sánh với việc triển khai FASTCGI cũ hơn, nó chứa một số tính năng bổ sung, chủ yếu là hữu ích cho các máy chủ được tải rất nhiều. [237]

Khi sử dụng PHP cho tập lệnh dòng lệnh, cần thực thi giao diện dòng lệnh PHP (CLI). PHP hỗ trợ giao diện lập trình ứng dụng máy chủ CLI (SAPI) kể từ PHP & NBSP; 4.3.0. [238] Trọng tâm chính của SAPI này là phát triển các ứng dụng vỏ bằng PHP. Có khá nhiều sự khác biệt giữa CLI sapi và các SAPI khác, mặc dù chúng có chung nhiều hành vi. [239]

PHP có giao diện mô -đun trực tiếp được gọi là SAPI cho các máy chủ web khác nhau; [240] trong trường hợp PHP & NBSP; 5 và Apache & NBSP; 2.0 trên Windows, nó được cung cấp dưới dạng tệp DLL có tên Php5Apache2.dll, [241] là mô -đun rằng, trong số các chức năng khác, cung cấp một giao diện giữa PHP và máy chủ web, được triển khai dưới dạng mà máy chủ hiểu. Hình thức này là những gì được gọi là SAPI.php5apache2.dll,[241] which is a module that, among other functions, provides an interface between PHP and the web server, implemented in a form that the server understands. This form is what is known as a SAPI.

Có nhiều loại SAPI khác nhau cho các phần mở rộng máy chủ web khác nhau. Ví dụ, ngoài những người được liệt kê ở trên, các SAPI khác cho ngôn ngữ PHP bao gồm giao diện cổng thông thường và giao diện dòng lệnh. [240] [242]

PHP cũng có thể được sử dụng để viết các ứng dụng giao diện người dùng đồ họa (GUI) của máy tính để bàn, bằng cách sử dụng tiện ích mở rộng PHP-GTK. PHP-GTK không được bao gồm trong phân phối PHP chính thức, [235] và như một phần mở rộng, nó chỉ có thể được sử dụng với các phiên bản PHP 5.1.0 trở lên. Cách phổ biến nhất để cài đặt PHP-GTK là biên dịch nó từ mã nguồn. [243]

When PHP is installed and used in cloud environments, software development kits (SDKs) are provided for using cloud-specific features. For example:

  • Amazon Web Services provides the AWS SDK for PHP[244]
  • Microsoft Azure can be used with the Windows Azure SDK for PHP.[245]

Numerous configuration options are supported, affecting both core PHP features and extensions.[246][247] Configuration file



abstract class User
{
    protected string $name;

    public function __construct(string $name)
    {
        // make first letter uppercase and the rest lowercase
        $this->name = ucfirst(strtolower($name));
    }

    public function greet(): string
    {
        return "Hello, my name is " . $this->name;
    }

    abstract public function job(): string;
}

class Student extends User
{
    public function __construct(string $name, private string $course)
    {
        parent::__construct($name);
    }

    public function job(): string
    {
        return "I learn " . $this->course;
    }
}

class Teacher extends User
{
    public function __construct(string $name, private array $teachingCourses)
    {
        parent::__construct($name);
    }

    public function job(): string
    {
        return "I teach " . implode(", ", $this->teachingCourses);
    }
}

$students = [
    new Student("Alice", "Computer Science"),
    new Student("Bob", "Computer Science"),
    new Student("Charlie", "Business Studies"),
];

$teachers = [
    new Teacher("Dan", ["Computer Science", "Information Security"]),
    new Teacher("Erin", ["Computer Science", "3D Graphics Programming"]),
    new Teacher("Frankie", ["Online Marketing", "Business Studies", "E-commerce"]),
];

foreach ([$students, $teachers] as $users) {
    echo $users[0]::class . "s:\n";

    array_walk($users, function (User $user) {
        echo "{$user->greet()}, {$user->job()}\n";
    });
}
9 is searched for in different locations, depending on the way PHP is used.[248] The configuration file is split into various sections,[249] while some of the configuration options can be also set within the web server configuration.[250]

Use[edit][edit]

Hướng dẫn on which platform php runs? - php chạy trên nền tảng nào?

A broad overview of the LAMP software bundle, displayed here together with Squid

PHP is a general-purpose scripting language that is especially suited to server-side web development, in which case PHP generally runs on a web server. Any PHP code in a requested file is executed by the PHP runtime, usually to create dynamic web page content or dynamic images used on websites or elsewhere.[251] It can also be used for command-line scripting and client-side graphical user interface (GUI) applications. PHP can be deployed on most web servers, many operating systems and platforms, and can be used with many relational database management systems (RDBMS). Most web hosting providers support PHP for use by their clients. It is available free of charge, and the PHP Group provides the complete source code for users to build, customize and extend for their own use.[13]

Hướng dẫn on which platform php runs? - php chạy trên nền tảng nào?

Originally designed to create dynamic web pages, PHP now focuses mainly on server-side scripting,[252] and it is similar to other server-side scripting languages that provide dynamic content from a web server to a client, such as Microsoft's ASP.NET, Sun Microsystems' JavaServer Pages,[253] and

$human_readable_date = $user->getBirthday()?->diffForHumans();
00. PHP has also attracted the development of many software frameworks that provide building blocks and a design structure to promote rapid application development (RAD). Some of these include PRADO, CakePHP, Symfony, CodeIgniter, Laravel, Yii Framework, Phalcon and Laminas, offering features similar to other web frameworks.

The LAMP architecture has become popular in the web industry as a way of deploying web applications.[254] PHP is commonly used as the P in this bundle alongside Linux, Apache and MySQL, although the P may also refer to Python, Perl, or some mix of the three. Similar packages, WAMP and MAMP, are also available for Windows and macOS, with the first letter standing for the respective operating system. Although both PHP and Apache are provided as part of the macOS base install, users of these packages seek a simpler installation mechanism that can be more easily kept up to date.

For specific and more advanced usage scenarios, PHP offers a well defined and documented way for writing custom extensions in C or C++.[255][256][257][258][259][260][261] Besides extending the language itself in form of additional libraries, extensions are providing a way for improving execution speed where it is critical and there is room for improvements by using a true compiled language.[262][263] PHP also offers well defined ways for embedding itself into other software projects. That way PHP can be easily used as an internal scripting language for another project, also providing tight interfacing with the project's specific internal data structures.[264]

PHP received mixed reviews due to lacking support for multithreading at the core language level,[265] though using threads is made possible by the "pthreads" PECL extension.[266][267]

A command line interface, php-cli, and two ActiveX Windows Script Host scripting engines for PHP have been produced.

Popularity and usage statistics[edit]

PHP is used for Web content management systems including MediaWiki,[268] WordPress,[269] Joomla,[270] Drupal,[271] Moodle,[272] eZ Publish, eZ Platform, and SilverStripe.[273]

As of January 2013, PHP was used in more than 240 million websites (39% of those sampled) and was installed on 2.1 million web servers.[274]

As of March 2021, PHP was used as the server-side programming language on 79.1% of websites, down from 83.5% previously, where the language could be determined, and PHP 7 is the most used version of the language with 50.3% of all websites on the web using that version.[275]

Security[edit][edit]

In 2019, 11% of all vulnerabilities listed by the National Vulnerability Database were linked to PHP;[276] historically, about 30% of all vulnerabilities listed since 1996 in this database are linked to PHP. Technical security flaws of the language itself or of its core libraries are not frequent (22 in 2009, about 1% of the total although PHP applies to about 20% of programs listed). Recognizing that programmers make mistakes, some languages include taint checking to automatically detect the lack of input validation which induces many issues. Such a feature is being developed for PHP,[278] but its inclusion into a release has been rejected several times in the past.[279][280]

Có các bản vá bảo vệ nâng cao như suhosin và hardening-patch, đặc biệt được thiết kế cho môi trường lưu trữ web. [281]

Trong lịch sử, các phiên bản cũ của PHP có một số tham số cấu hình và giá trị mặc định cho các cài đặt thời gian chạy đó khiến một số ứng dụng PHP dễ bị các vấn đề về bảo mật. Trong số này, các chỉ thị cấu hình

$human_readable_date = $user->getBirthday()?->diffForHumans();
01 và ____ 44 [282] là những chỉ thị được biết đến nhiều nhất; Cái sau làm cho bất kỳ tham số URL nào trở thành biến PHP, mở một đường dẫn cho các lỗ hổng bảo mật nghiêm trọng bằng cách cho phép kẻ tấn công đặt giá trị của bất kỳ biến toàn cầu không được giới thiệu nào và can thiệp vào việc thực hiện tập lệnh PHP. Hỗ trợ cho các cài đặt "Trích dẫn ma thuật" và "đăng ký toàn cầu" đã bị phản đối kể từ PHP & NBSP; 5.3.0 và bị xóa khỏi PHP & NBSP; 5.4.0. [283]

Một ví dụ khác cho lỗ hổng cài đặt thời gian chạy tiềm năng xuất phát từ việc không tắt thực thi PHP (ví dụ bằng cách sử dụng Chỉ thị cấu hình

$human_readable_date = $user->getBirthday()?->diffForHumans();
03) [284] cho thư mục nơi lưu trữ các tệp được tải lên; cho phép nó có thể dẫn đến việc thực thi mã độc được nhúng trong các tệp được tải lên. [285] [286] [287] Thực tiễn tốt nhất là xác định vị trí thư mục hình ảnh bên ngoài gốc tài liệu có sẵn cho máy chủ web và phục vụ nó thông qua tập lệnh trung gian hoặc tắt thực thi PHP cho thư mục lưu trữ các tệp được tải lên.

Ngoài ra, cho phép tải động của các tiện ích mở rộng PHP (thông qua Chỉ thị cấu hình ____104) [288] trong môi trường lưu trữ web được chia sẻ có thể dẫn đến các vấn đề bảo mật. [289] [290]

Các chuyển đổi loại ngụ ý dẫn đến các giá trị khác nhau được coi là bình đẳng, đôi khi chống lại ý định của lập trình viên, có thể dẫn đến các vấn đề bảo mật. Ví dụ, kết quả của so sánh

$human_readable_date = $user->getBirthday()?->diffForHumans();
05 là
$human_readable_date = $user->getBirthday()?->diffForHumans();
06, bởi vì các chuỗi có thể phân tích được khi các số được chuyển đổi thành số; Trong trường hợp này, giá trị so sánh đầu tiên được coi là ký hiệu khoa học có giá trị (0 × 101234), bằng không. Các lỗi như thế này dẫn đến các lỗ hổng xác thực trong Diễn đàn Máy đơn giản, [291] TYPO3 [292] và PHPBB [293] khi so sánh các băm mật khẩu MD5. Cách được khuyến nghị là sử dụng Hash_equals () (đối với an toàn tấn công thời gian),
$human_readable_date = $user->getBirthday()?->diffForHumans();
07 hoặc toán tử nhận dạng (
$human_readable_date = $user->getBirthday()?->diffForHumans();
08), vì
$human_readable_date = $user->getBirthday()?->diffForHumans();
09 dẫn đến ________ 110. [294]
$human_readable_date = $user->getBirthday()?->diffForHumans();
05
is
$human_readable_date = $user->getBirthday()?->diffForHumans();
06, because strings that are parsable as numbers are converted to numbers; in this case, the first compared value is treated as scientific notation having the value (0×101234), which is zero. Errors like this resulted in authentication vulnerabilities in Simple Machines Forum,[291] Typo3[292] and phpBB[293] when MD5 password hashes were compared. The recommended way is to use hash_equals() (for timing attack safety),
$human_readable_date = $user->getBirthday()?->diffForHumans();
07 or the identity operator (
$human_readable_date = $user->getBirthday()?->diffForHumans();
08), as
$human_readable_date = $user->getBirthday()?->diffForHumans();
09
results in
$human_readable_date = $user->getBirthday()?->diffForHumans();
10.[294]

Trong một phân tích năm 2013 về hơn 170.000 độ lệch trang web, được xuất bản bởi Vùng-H, kỹ thuật được sử dụng thường xuyên nhất (53%) là khai thác lỗ hổng bao gồm tệp, chủ yếu liên quan đến việc sử dụng không an toàn của các cấu trúc ngôn ngữ PHP

$human_readable_date = $user->getBirthday()?->diffForHumans();
11,
$human_readable_date = $user->getBirthday()?->diffForHumans();
12 và
$human_readable_date = $user->getBirthday()?->diffForHumans();
13. [[[[ 295] [296]

Kể từ tháng 4 & NBSP; 2021, W3Techs báo cáo rằng 64% trang web sử dụng PHP, sử dụng phiên bản 7.2 trở lên (không còn được nhóm phát triển PHP hỗ trợ) với 35% tất cả các trang web PHP sử dụng phiên bản 5.6 trở lên. [297]

Phiên bản 5 vẫn được sử dụng bởi 24,5% của tất cả các trang web (tháng 9 năm 2021). [298] Rất khuyến khích di chuyển sang Php phiên bản 7 hoặc 8 và sử dụng

$human_readable_date = $user->getBirthday()?->diffForHumans();
14 thay vì
$human_readable_date = $user->getBirthday()?->diffForHumans();
15 hoặc
$human_readable_date = $user->getBirthday()?->diffForHumans();
16, vì các hàm sau không an toàn về mặt mật mã. Có hai cuộc tấn công có thể được thực hiện qua các nguồn entropy PHP: "Tấn công hạt giống" và "Tấn công phục hồi nhà nước". Với các công nghệ GPU hiện tại, kẻ tấn công có thể thực hiện các tính toán lên tới 230 MD5 mỗi giây với GPU $ 250, trong khi với thêm $ 500 có thể đạt tới 232 tính toán. [299] Kết hợp với "cuộc tấn công sinh nhật", điều này có thể dẫn đến các lỗ hổng an ninh nghiêm trọng.

Xem thêm [sửa][edit]

  • So sánh các ngôn ngữ lập trình
  • Danh sách các gói amp
  • Danh sách các máy gia tốc PHP
  • Danh sách các biên tập viên PHP
  • PEAR (Khoản mở rộng và kho ứng dụng PHP)
  • Máy gia tốc PHP
  • Bộ xử lý mẫu
  • XAMPP (Gói ngăn xếp giải pháp web đa nền tảng miễn phí và nguồn mở)
  • Máy chủ Zend

References[edit][edit]

  1. ^ Ablerdorf, Rasmus (ngày 8 tháng 6 năm 1995). "Thông báo: Công cụ trang chủ cá nhân (Công cụ PHP)". Truy cập ngày 7 tháng 6 năm 2011.a b Lerdorf, Rasmus (June 8, 1995). "Announce: Personal Home Page Tools (PHP Tools)". Retrieved 7 June 2011.
  2. ^ Ablerdorf, Rasmus (2007-04-26). "PHP trên hormone & nbsp; - Lịch sử trình bày PHP của Rasmus Lerdorf được đưa ra tại Hội nghị MySQL ở Santa Clara, California". Mạng hội thoại. Được lưu trữ từ bản gốc vào năm 2019-01-06. Truy cập 2009-12-11.a b Lerdorf, Rasmus (2007-04-26). "PHP on Hormones – history of PHP presentation by Rasmus Lerdorf given at the MySQL Conference in Santa Clara, California". The Conversations Network. Archived from the original on 2019-01-06. Retrieved 2009-12-11.
  3. ^"PHP: đối số chức năng - thủ công". an toàn.php.net. "PHP: Function arguments - Manual". secure.php.net.
  4. ^Stogov, Dmitry (2015-12-04). "Đó không phải là một bí mật rằng một số ý tưởng tối ưu hóa #PHP7 đến từ HHVM, Luajit và V8". Twitter. Stogov, Dmitry (2015-12-04). "It's not a secret that some #PHP7 optimization ideas came from HHVM, LuaJIT and V8". Twitter.
  5. ^"PHP: Bộ tiền xử lý siêu văn bản". www.php.net. Truy cập 2020-02-12. "PHP: Hypertext Preprocessor". www.php.net. Retrieved 2020-02-12.
  6. ^ Abkrill, Paul (2013-11-18). "Hãy tin rằng sự cường điệu: Người sáng lập PHP ủng hộ công nghệ hiphop của Facebook". Infoworld. Truy cập 2022-10-13.a b Krill, Paul (2013-11-18). "Believe the hype: PHP founder backs Facebook's HipHop technology". InfoWorld. Retrieved 2022-10-13.
  7. ^"Thông báo: Công cụ trang chủ cá nhân (Công cụ PHP)". các nhóm.google.com. Truy cập 2022-11-03. "Announce: Personal Home Page Tools (PHP Tools)". groups.google.com. Retrieved 2022-11-03.
  8. ^ abcdefhi "Lịch sử của PHP và các dự án liên quan". Nhóm PHP. Truy cập 2008-02-25.a b c d e f g h i "History of PHP and related projects". The PHP Group. Retrieved 2008-02-25.
  9. ^"Lịch sử của PHP". PHP.NET. "History of PHP". php.net.
  10. ^Hướng dẫn sử dụng PHP: Lời nói đầu, www.php.net. PHP Manual: Preface, www.php.net.
  11. ^"Giới thiệu: PHP có thể làm gì?". Hướng dẫn sử dụng PHP. Truy cập 2009-03-05. "Introduction: What can PHP do?". PHP Manual. Retrieved 2009-03-05.
  12. ^Máy bay trực thăng: Cổng Node-AR-Drone cho phép người dùng điều khiển một máy bay không người lái vẹt qua php: jolicode/php-ar-drone, joloode, 2019-01-11, lấy ra 2019-02-23 helicopter: Port of node-ar-drone which allows user to control a Parrot AR Drone over PHP: jolicode/php-ar-drone, JoliCode, 2019-01-11, retrieved 2019-02-23
  13. ^ ab "nhúng php trong html". O'Reilly. 2001-05-03. Truy cập 2008-02-25.a b "Embedding PHP in HTML". O'Reilly. 2001-05-03. Retrieved 2008-02-25.
  14. ^Jackson, Joab (2014-07-31). "PHP nhận được một đặc điểm kỹ thuật chính thức, cuối cùng". Thế giới máy tính. Idg. Jackson, Joab (2014-07-31). "PHP gets a formal specification, at last". Computerworld. IDG.
  15. ^"Thống kê sử dụng PHP cho các trang web". W3Techs - Khảo sát công nghệ web trên toàn thế giới. W3Techs. 26 tháng 4 năm 2021. Truy cập ngày 26 tháng 4 năm 2021. "Usage statistics of PHP for websites". W3Techs - World Wide Web Technology Surveys. W3Techs. 26 April 2021. Retrieved 26 April 2021.
  16. ^Lerdorf, Rasmus (2012-07-20). "Tôi tự hỏi tại sao mọi người cứ viết rằng PHP đã từng được viết bằng Perl. Nó chưa bao giờ. #PHP". Twitter. Truy cập 2014-09-04. Lerdorf, Rasmus (2012-07-20). "I wonder why people keep writing that PHP was ever written in Perl. It never was. #php". Twitter. Retrieved 2014-09-04.
  17. ^Lerdorf, Rasmus (2007-04-26). "PHP trên hormone". Mạng hội thoại. Được lưu trữ từ bản gốc (mp3) vào năm 2019-01-06. Truy cập 2009-06-22. Lerdorf, Rasmus (2007-04-26). "PHP on Hormones". The Conversations Network. Archived from the original (mp3) on 2019-01-06. Retrieved 2009-06-22.
  18. ^Lerdorf, Rasmus (1995-06-08). "Thông báo: Công cụ trang chủ cá nhân (Công cụ PHP)". Nhóm tin tức: & nbsp; comp.infosystems.www.authoring.cgi. Truy cập 2006-09-17. Lerdorf, Rasmus (1995-06-08). "Announce: Personal Home Page Tools (PHP Tools)". Newsgroup: comp.infosystems.www.authoring.cgi. Retrieved 2006-09-17.
  19. ^Lerdorf, Rasmus (2007). "Trượt 3". Các slide cho 'php trên hormone' nói chuyện. Nhóm PHP. Truy cập 2009-06-22. Lerdorf, Rasmus (2007). "Slide 3". slides for 'PHP on Hormones' talk. The PHP Group. Retrieved 2009-06-22.
  20. ^"Rasmus Lerdorf, Yahoo kỹ thuật cao cấp: Php, đằng sau mic". 2003-11-19. Được lưu trữ từ bản gốc vào năm 2013-07-28. "Rasmus Lerdorf, Senior Technical Yahoo: PHP, Behind the Mic". 2003-11-19. Archived from the original on 2013-07-28.
  21. ^"Các vấn đề với PHP". Truy cập ngày 20 tháng 12 năm 2010. "Problems with PHP". Retrieved 20 December 2010.
  22. ^"Php.Internals: Re: Tính nhất quán tên chức năng". news.php.net. 2013-12-28. Truy cập 2014-02-09. "php.internals: Re: Function name consistency". news.php.net. 2013-12-28. Retrieved 2014-02-09.
  23. ^Rasmus Lerdorf (ngày 16 tháng 12 năm 2013). "Re: Đặt tên chức năng linh hoạt". Nhóm tin tức: & NBSP; Php.Internals. Truy cập ngày 26 tháng 12 năm 2013. Rasmus Lerdorf (Dec 16, 2013). "Re: Flexible function naming". Newsgroup: php.internals. Retrieved December 26, 2013.
  24. ^"Php & nbsp; - Từ viết tắt có nghĩa là bỏ phiếu". PHP.NET. Được lưu trữ từ bản gốc vào ngày 15 tháng 8 năm 2000. "PHP – Acronym Meaning Vote". PHP.net. Archived from the original on August 15, 2000.
  25. ^"Zend Engine phiên bản 2.0: Tổng quan và thiết kế tính năng". Zend Technologies Ltd. được lưu trữ từ bản gốc vào ngày 2006-07-19. Truy cập 2006-09-17. "Zend Engine version 2.0: Feature Overview and Design". Zend Technologies Ltd. Archived from the original on 2006-07-19. Retrieved 2006-09-17.
  26. ^"Php.net 2007 Lưu trữ tin tức". Nhóm PHP. 2007-07-13. Truy cập 2008-02-22. "php.net 2007 news archive". The PHP Group. 2007-07-13. Retrieved 2008-02-22.
  27. ^Kerner, Sean Michael (2008-02-01). "Php & nbsp; 4 là đã chết Php & nbsp; 5". InternetNews. Được lưu trữ từ bản gốc vào năm 2018-08-06. Truy cập 2018-12-16. Kerner, Sean Michael (2008-02-01). "PHP 4 is Dead—Long Live PHP 5". InternetNews. Archived from the original on 2018-08-06. Retrieved 2018-12-16.
  28. ^Trachtenberg, Adam (2004-07-15). "Tại sao PHP & nbsp; 5 đá!". O'Reilly. Truy cập 2008-02-22. Trachtenberg, Adam (2004-07-15). "Why PHP 5 Rocks!". O'Reilly. Retrieved 2008-02-22.
  29. ^"Liên kết tĩnh muộn trong PHP". Bánh sandwich kỹ thuật số. 2006-02-23. Truy cập 2008-03-25. "Late Static Binding in PHP". Digital Sandwich. 2006-02-23. Retrieved 2008-03-25.
  30. ^"Từ khóa tĩnh". Nhóm PHP. Truy cập 2008-03-25. "Static Keyword". The PHP Group. Retrieved 2008-03-25.
  31. ^"Gophp5". Được lưu trữ từ bản gốc vào năm 2011-07-17. "GoPHP5". Archived from the original on 2011-07-17.
  32. ^Gophp5. "Các dự án PHP tham gia lực lượng để đi PHP & NBSP; 5" (PDF). Thông cáo báo chí GOPHP5. Được lưu trữ từ bản gốc (PDF) vào ngày 2019-08-04. Truy cập 2008-02-23. GoPHP5. "PHP projects join forces to Go PHP 5" (PDF). GoPHP5 Press Release. Archived from the original (PDF) on 2019-08-04. Retrieved 2008-02-23.
  33. ^"Gophp5". Gophp5. Được lưu trữ từ bản gốc vào năm 2011-04-27. Truy cập 2008-02-22. "GoPHP5". GoPHP5. Archived from the original on 2011-04-27. Retrieved 2008-02-22.
  34. ^"Cài đặt và cấu hình PHP". PHP.NET. Truy cập 2013-10-29. "PHP Installation and Configuration". php.net. Retrieved 2013-10-29.
  35. ^"PHP cho Windows: nhị phân và nguồn phát hành (5.3)". PHP.NET. Truy cập 2013-10-29. "PHP for Windows: Binaries and sources releases (5.3)". php.net. Retrieved 2013-10-29.
  36. ^"PHP cho Windows: nhị phân và nguồn phát hành (5.4)". PHP.NET. Truy cập 2013-10-29. "PHP for Windows: Binaries and sources releases (5.4)". php.net. Retrieved 2013-10-29.
  37. ^"PHP cho Windows: nhị phân và nguồn phát hành (5.5)". PHP.NET. Truy cập 2013-10-29. "PHP for Windows: Binaries and sources releases (5.5)". php.net. Retrieved 2013-10-29.
  38. ^"PHP: Phiên bản được hỗ trợ". "PHP: Supported Versions".
  39. ^"Các loại: Chuỗi (Hướng dẫn sử dụng PHP)". PHP.NET. Truy cập 2013-09-22. "Types: Strings (PHP Manual)". PHP.net. Retrieved 2013-09-22.
  40. ^"Chi tiết của loại chuỗi (hướng dẫn sử dụng PHP)". PHP.NET. Truy cập 2021-09-22. "Details of the String Type (PHP Manual)". PHP.net. Retrieved 2021-09-22.
  41. ^Andrei Zmievski (2005-08-10). "Tài liệu thiết kế hỗ trợ PHP Unicode" (Danh sách gửi thư). Truy cập 2014-02-09. Andrei Zmievski (2005-08-10). "PHP Unicode support design document" (Mailing list). Retrieved 2014-02-09.
  42. ^"Php & nbsp; 5.5 hoặc 6.0". Truy cập 2014-02-09. "PHP 5.5 or 6.0". Retrieved 2014-02-09.
  43. ^Andrei Zmievski (2011-04-22). "Cái tốt, cái xấu và xấu xí: những gì đã xảy ra với Unicode và php & nbsp; 6". Truy cập 2014-02-09. Andrei Zmievski (2011-04-22). "The Good, the Bad, and the Ugly: What Happened to Unicode and PHP 6". Retrieved 2014-02-09.
  44. ^Rasmus Lerdorf (2010-03-11). "Php & nbsp; 6" (danh sách gửi thư). Truy cập 2014-02-07. Rasmus Lerdorf (2010-03-11). "PHP 6" (Mailing list). Retrieved 2014-02-07.
  45. ^"Cuộc tranh luận Muppet không bao giờ của Php & nbsp; 6 v Php & nbsp; 7". Được lưu trữ từ bản gốc vào năm 2015-11-19. Truy cập 2015-11-19. "The Neverending Muppet Debate of PHP 6 v PHP 7". Archived from the original on 2015-11-19. Retrieved 2015-11-19.
  46. ^"RFC: Tên của phát hành PHP tiếp theo". PHP.NET. 2014-07-07. Truy cập 2014-07-15. "RFC: Name of Next Release of PHP". php.net. 2014-07-07. Retrieved 2014-07-15.
  47. ^"Re: [php-dev] [bỏ phiếu] [rfc] Tên của bản phát hành tiếp theo của PHP (một lần nữa)". 2014-07-30. Truy cập 2014-07-30. "Re: [PHP-DEV] [VOTE] [RFC] Name of Next Release of PHP (again)". 2014-07-30. Retrieved 2014-07-30.
  48. ^"PHPNG: Công cụ PHP được tái cấu trúc với cải tiến hiệu suất lớn". news.php.net. "phpng: Refactored PHP Engine with Big Performance Improvement". news.php.net.
  49. ^"PHP: rfc: phpng". PHP.NET. Truy cập ngày 16 tháng 12 năm 2014. "PHP: rfc:phpng". php.net. Retrieved 16 December 2014.
  50. ^ AB "PHP: PHPNG". PHP.NET. Truy cập 2014-07-15.a b "PHP: phpng". php.net. Retrieved 2014-07-15.
  51. ^"Hợp nhất nhánh 'ZendEngine3'". github.com. 2014-12-05. Truy cập 2014-12-05. "Merge branch 'ZendEngine3'". github.com. 2014-12-05. Retrieved 2014-12-05.
  52. ^ ABC "PHP: Quá trình phát hành". 2011-06-20. Truy cập 2013-10-06.a b c "PHP: Release Process". 2011-06-20. Retrieved 2013-10-06.
  53. ^ AB "PHP RFC: Các trường hợp ngoại lệ trong động cơ (đối với PHP & nbsp; 7)". PHP.NET. Truy cập 2015-05-21.a b "PHP RFC: Exceptions in the engine (for PHP 7)". php.net. Retrieved 2015-05-21.
  54. ^ AB "PHP RFC: Cú pháp biến đồng đều". PHP.NET. 2014-05-31. Truy cập 2014-07-30.a b "PHP RFC: Uniform Variable Syntax". php.net. 2014-05-31. Retrieved 2014-07-30.
  55. ^"Trình chỉnh sửa PHP trực tuyến | đầu ra cho UDRHX". 3v4l.org. "Online PHP editor | output for udRhX". 3v4l.org.
  56. ^"PHP rfc: Khắc phục" foreach "hành vi". PHP.NET. Truy cập 2015-05-21. "PHP RFC: Fix "foreach" behavior". php.net. Retrieved 2015-05-21.
  57. ^"PHP RFC: Hành vi xây dựng của các lớp bên trong". PHP.NET. Truy cập 2015-05-21. "PHP RFC: Constructor behaviour of internal classes". php.net. Retrieved 2015-05-21.
  58. ^"PHP RFC: Loại bỏ người chết hoặc chưa được chuyển PHP7 và các phần mở rộng". PHP.NET. Truy cập 2015-05-21. "PHP RFC: Removal of dead or not yet PHP7 ported SAPIs and extensions". php.net. Retrieved 2015-05-21.
  59. ^"PHP rfc: Fix Danh sách () Sự không nhất quán hành vi". PHP.NET. Truy cập 2015-05-21. "PHP RFC: Fix list() behavior inconsistency". php.net. Retrieved 2015-05-21.
  60. ^"PHP RFC: Xóa thẻ PHP thay thế". PHP.NET. Truy cập 2015-05-21. "PHP RFC: Remove alternative PHP tags". php.net. Retrieved 2015-05-21.
  61. ^"PHP RFC: Đưa ra xác định nhiều trường hợp mặc định trong một công tắc lỗi cú pháp". PHP.NET. Truy cập 2015-05-21. "PHP RFC: Make defining multiple default cases in a switch a syntax error". php.net. Retrieved 2015-05-21.
  62. ^"PHP RFC: Xóa hỗ trợ Hex trong chuỗi số". PHP.NET. Truy cập 2015-05-21. "PHP RFC: Remove hex support in numeric strings". php.net. Retrieved 2015-05-21.
  63. ^ AB "PHP RFC: ngữ nghĩa số nguyên". PHP.NET. Truy cập 2015-05-21. Làm cho Nan và Infinity luôn trở thành 0 khi được sử dụng vào số nguyên có nghĩa là tính nhất quán đa nền tảng hơn, và cũng ít gây ngạc nhiên hơn so với những gì hiện đang sản xuấta b "PHP RFC: Integer Semantics". php.net. Retrieved 2015-05-21. Making NaN and Infinity always become zero when cast to integer means more cross-platform consistency, and is also less surprising than what is currently produces
  64. ^"PHP RFC: Thất bại ZPP trên tràn". PHP.NET. Truy cập 2015-05-21. "PHP RFC: ZPP Failure on Overflow". php.net. Retrieved 2015-05-21.
  65. ^ ABC "RFC: Các loại trả lại". PHP.NET. 2015-01-27. Truy cập 2015-01-28.a b c "RFC: Return Types". php.net. 2015-01-27. Retrieved 2015-01-28.
  66. ^ abcdef "rfc: khai báo loại vô hướng". PHP.NET. 2015-03-16. Truy cập 2015-03-17.a b c d e f "RFC: Scalar Type Declarations". php.net. 2015-03-16. Retrieved 2015-03-17.
  67. ^ abcdefgbrent. "Có gì mới trong Php 8". Khâu. Truy cập ngày 22 tháng 9 năm 2020.a b c d e f g Brent. "What's new in PHP 8". Stitcher. Retrieved 22 September 2020.
  68. ^"Php 8 được phát hành". PHP. Truy cập ngày 27 tháng 11 năm 2020. "PHP 8 Released". PHP. Retrieved 27 November 2020.
  69. ^ AB "PHP: RFC: JIT". Wiki.php.net. Truy cập 2019-04-05.a b "PHP: rfc:jit". wiki.php.net. Retrieved 2019-04-05.
  70. ^Brent. "Php 8: Hiệu suất JIT trong các ứng dụng web ngoài đời thực". Stitcher.io. Truy cập ngày 4 tháng 10 năm 2020. Brent. "PHP 8: JIT performance in real-life web applications". Stitcher.io. Retrieved 4 October 2020.
  71. ^Rethams, derick. "Php 8: Một cái nhìn nhanh về JIT". Rethams, Derick. "PHP 8: A Quick Look at JIT".
  72. ^ Abpopov, Nikita. "" Có gì mới trong Php 8.0? "Nikita Popov". PHP FWDAYS. Được lưu trữ từ bản gốc vào ngày 2021-12-11. Truy cập ngày 4 tháng 10 năm 2020.a b Popov, Nikita. ""What's new in PHP 8.0?" Nikita Popov". PHP fwdays. Archived from the original on 2021-12-11. Retrieved 4 October 2020.
  73. ^Daniele, Carlo (25 tháng 5 năm 2020). "Có gì mới trong Php 8 (tính năng, cải tiến và trình biên dịch JIT)". Kinsta. Truy cập ngày 24 tháng 12 năm 2020. Daniele, Carlo (25 May 2020). "What's New in PHP 8 (Features, Improvements, and the JIT Compiler)". Kinsta. Retrieved 24 December 2020.
  74. ^Redmond, Paul. "Biểu thức kết hợp đang đến với Php 8". Laravel News. Truy cập ngày 4 tháng 10 năm 2020. Redmond, Paul. "Match Expression is Coming to PHP 8". Laravel News. Retrieved 4 October 2020.
  75. ^"Php 8.0: Biểu thức phù hợp". Php Watch. Truy cập ngày 4 tháng 10 năm 2020. "PHP 8.0: Match Expressions". PHP Watch. Retrieved 4 October 2020.
  76. ^Barnes, Eric. "Php 8 hiện đã được phát hành!". Laravel News. Truy cập ngày 24 tháng 12 năm 2020. Barnes, Eric. "PHP 8 is now Released!". Laravel News. Retrieved 24 December 2020.
  77. ^ AB "PHP RFC: Biểu thức ném". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020.a b "PHP RFC: throw expression". wiki.php.net. Retrieved 14 August 2020.
  78. ^ AB "PHP RFC: Toán tử nullsafe". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020.a b "PHP RFC: Nullsafe operator". wiki.php.net. Retrieved 14 August 2020.
  79. ^ AB "PHP: RFC: yếu". Wiki.php.net. Truy cập 2019-04-05.a b "PHP: rfc:weakrefs". wiki.php.net. Retrieved 2019-04-05.
  80. ^Merchant, Amit (13 tháng 6 năm 2020). "Các chức năng chuỗi mới này đang đến trong Php 8". Amit Merchant. Truy cập ngày 4 tháng 10 năm 2020. Merchant, Amit (13 June 2020). "These new string functions are coming in PHP 8". Amit Merchant. Retrieved 4 October 2020.
  81. ^Popov, Nikita. "Gọi cho sự tham gia: Chú thích đối số chức năng nội bộ và các loại trả về". Bên ngoài. Truy cập ngày 19 tháng 11 năm 2020. Popov, Nikita. "Call for participation: Annotating internal function argument and return types". Externals. Retrieved 19 November 2020.
  82. ^"Php: thông báo phát hành Php 8.1.0". www.php.net. Truy cập 2022-01-08. "PHP: PHP 8.1.0 Release Announcement". www.php.net. Retrieved 2022-01-08.
  83. ^"Các tính năng Php 8.1 tuyệt vời: Enums, Readonly & More (2021)". RJS. 2021-12-21. Truy cập 2022-01-08. "Great new PHP 8.1 features: enums, readonly & more (2021)". RJS. 2021-12-21. Retrieved 2022-01-08.
  84. ^ abcdefghijkl "Các nhánh không được hỗ trợ". PHP.NET. Truy cập 2019-07-31.a b c d e f g h i j k l "Unsupported Branches". php.net. Retrieved 2019-07-31.
  85. ^"Php 4.0.0 được phát hành". Truy cập ngày 25 tháng 10 năm 2020. "PHP 4.0.0 Released". Retrieved 25 October 2020.
  86. ^ ABCD "PHP: PHP & NBSP; 4 Changelog". Nhóm PHP. 2008-01-03. Truy cập 2008-02-22.a b c d "PHP: PHP 4 ChangeLog". The PHP Group. 2008-01-03. Retrieved 2008-02-22.
  87. ^"Thông báo phát hành Php 4.1.0". Truy cập ngày 25 tháng 10 năm 2020. "PHP 4.1.0 Release Announcement". Retrieved 25 October 2020.
  88. ^"Thông báo phát hành Php 4.2.0". Truy cập ngày 25 tháng 10 năm 2020. "PHP 4.2.0 Release Announcement". Retrieved 25 October 2020.
  89. ^"Thông báo phát hành Php 4.3.0". Truy cập ngày 25 tháng 10 năm 2020. "PHP 4.3.0 Release Announcement". Retrieved 25 October 2020.
  90. ^"Sử dụng PHP từ dòng lệnh". Hướng dẫn sử dụng PHP. Nhóm PHP. Truy cập 2009-09-11. "Using PHP from the command line". PHP Manual. The PHP Group. Retrieved 2009-09-11.
  91. ^"Thông báo phát hành Php 4.4.0". Truy cập ngày 25 tháng 10 năm 2020. "PHP 4.4.0 Release Announcement". Retrieved 25 October 2020.
  92. ^"Php & nbsp; 4.4.0 Thông báo phát hành". Php Mannual. Nhóm PHP. Truy cập 2013-11-24. "PHP 4.4.0 Release Announcement". PHP Mannual. The PHP Group. Retrieved 2013-11-24.
  93. ^"Php 5.0.0 được phát hành!". Truy cập ngày 25 tháng 10 năm 2020. "PHP 5.0.0 Released!". Retrieved 25 October 2020.
  94. ^ ABC "PHP: PHP & NBSP; 5 Changelog". Nhóm PHP. 2007-11-08. Truy cập 2008-02-22.a b c "PHP: PHP 5 ChangeLog". The PHP Group. 2007-11-08. Retrieved 2008-02-22.
  95. ^"Php 5.1.0 Thông báo phát hành". Truy cập ngày 25 tháng 10 năm 2020. "PHP 5.1.0 Release Announcement". Retrieved 25 October 2020.
  96. ^"Hướng dẫn sử dụng PHP: PDO". Nhóm PHP. 2011-11-15. Truy cập 2011-11-15. "PHP manual: PDO". The PHP Group. 2011-11-15. Retrieved 2011-11-15.
  97. ^"Thông báo phát hành Php 5.2.0". Truy cập ngày 25 tháng 10 năm 2020. "PHP 5.2.0 Release Announcement". Retrieved 25 October 2020.
  98. ^"Thông báo phát hành Php 5.3.0". Truy cập ngày 25 tháng 10 năm 2020. "PHP 5.3.0 Release Announcement". Retrieved 25 October 2020.
  99. ^"Thông báo phát hành Php 5.4.0". Truy cập ngày 25 tháng 10 năm 2020. "PHP 5.4.0 Release Announcement". Retrieved 25 October 2020.
  100. ^"Máy chủ web tích hợp". Truy cập ngày 26 tháng 3 năm 2012. "Built-in web server". Retrieved March 26, 2012.
  101. ^"Thông báo phát hành Php 5.5.0". Truy cập ngày 25 tháng 10 năm 2020. "PHP 5.5.0 Release Announcement". Retrieved 25 October 2020.
  102. ^ ABCD "Phiên bản được hỗ trợ". PHP.NET. Truy cập 2017-12-13.a b c d "Supported Versions". php.net. Retrieved 2017-12-13.
  103. ^"Php & nbsp; 5.5.0 thay đổi". PHP.NET. Truy cập 2015-03-03. "PHP 5.5.0 changes". php.net. Retrieved 2015-03-03.
  104. ^"Thông báo phát hành Php 5.6.0". Truy cập ngày 25 tháng 10 năm 2020. "PHP 5.6.0 Release Announcement". Retrieved 25 October 2020.
  105. ^"Di chuyển từ PHP & nbsp; 5.5.x sang PHP & nbsp; 5.6.x". PHP.NET. Truy cập 2014-03-24. "Migrating from PHP 5.5.x to PHP 5.6.x". php.net. Retrieved 2014-03-24.
  106. ^"Đặt lại PHP & nbsp; 6". Đã có những cuốn sách trên các kệ có ý định bao quát Php & nbsp; 6 kể từ ít nhất năm 2008, nhưng vào tháng 3 năm 2010, bản phát hành của PHP & NBSP; 6 không được phát hành - thực tế, nó thậm chí không gần với. Các sự kiện gần đây cho thấy PHP & NBSP; 6 sẽ không được phát hành trước năm 2011 & nbsp; - nếu, thực sự, nó được phát hành. "Resetting PHP 6". There have been books on the shelves purporting to cover PHP 6 since at least 2008. But, in March 2010, the PHP 6 release is not out – in fact, it is not even close to out. Recent events suggest that PHP 6 will not be released before 2011 – if, indeed, it is released at all.
  107. ^"Php & nbsp; 7 di chuyển tốc độ tối đa". 2014-10-31. Các phiên bản gần đây của PHP là một phần của loạt phát hành 5.x, nhưng sẽ không có PHP & NBSP; 6. "Chúng tôi sẽ bỏ qua [phiên bản] & nbsp; 6, bởi vì nhiều năm trước, chúng tôi đã có kế hoạch cho A & NBSP; 6, nhưng những kế hoạch đó rất khác so với những gì chúng tôi đang làm bây giờ", Gutmans nói. Đi thẳng vào phiên bản & nbsp; 7 tránh sự nhầm lẫn. "PHP 7 moves full speed ahead". 2014-10-31. Recent versions of PHP have been part of the 5.x release series, but there will be no PHP 6. "We're going to skip [version] 6, because years ago, we had plans for a 6, but those plans were very different from what we're doing now," Gutmans said. Going right to version 7 avoids confusion.
  108. ^"Lưu trữ tin tức & nbsp; - 2018: Php & nbsp; 7.2.9 phát hành". PHP.NET. 2018-08-16. Truy cập 2018-08-16. "News Archive – 2018: PHP 7.2.9 Released". php.net. 2018-08-16. Retrieved 2018-08-16.
  109. ^"PHP: RFC: size_t_and_int64_next". PHP.NET. Truy cập ngày 16 tháng 12 năm 2014. "PHP: rfc:size_t_and_int64_next". php.net. Retrieved 16 December 2014.
  110. ^"PHP: RFC: Tóm tắt_syntax_tree". PHP.NET. Truy cập ngày 16 tháng 12 năm 2014. "PHP: rfc:abstract_syntax_tree". php.net. Retrieved 16 December 2014.
  111. ^"PHP: RFC: đóng cửa_apply". PHP.NET. Truy cập ngày 16 tháng 12 năm 2014. "PHP: rfc:closure_apply". php.net. Retrieved 16 December 2014.
  112. ^"PHP: RFC: Integer_Semantics". PHP.NET. Truy cập ngày 16 tháng 12 năm 2014. "PHP: rfc:integer_semantics". php.net. Retrieved 16 December 2014.
  113. ^"PHP: rfc: isset_ternary". PHP.NET. Truy cập ngày 16 tháng 12 năm 2014. "PHP: rfc:isset_ternary". php.net. Retrieved 16 December 2014.
  114. ^"RFC: unicode CodePoint Escape Cú pháp". 2014-11-24. Truy cập 2014-12-19. "RFC: Unicode Codepoint Escape Syntax". 2014-11-24. Retrieved 2014-12-19.
  115. ^"Nhà điều hành so sánh (tàu vũ trụ) kết hợp". PHP.NET. Truy cập 2015-05-21. "Combined Comparison (Spaceship) Operator". php.net. Retrieved 2015-05-21.
  116. ^"PHP RFC: Phái đoàn máy phát". PHP.NET. Truy cập 2015-05-21. "PHP RFC: Generator Delegation". php.net. Retrieved 2015-05-21.
  117. ^"PHP RFC: Các lớp ẩn danh". PHP.NET. Truy cập 2015-05-21. "PHP RFC: Anonymous Classes". php.net. Retrieved 2015-05-21.
  118. ^"PHP RFC: CSPRNG Land-Land dễ dàng". PHP.NET. Truy cập 2015-05-21. "PHP RFC: Easy User-land CSPRNG". php.net. Retrieved 2015-05-21.
  119. ^"PHP RFC: Tuyên bố sử dụng nhóm". PHP.NET. Truy cập 2015-05-21. "PHP RFC: Group Use Declarations". php.net. Retrieved 2015-05-21.
  120. ^"PHP: rfc: void_return_type". PHP.NET. 2015-11-09. Truy cập 2015-11-14. "PHP: rfc:void_return_type". php.net. 2015-11-09. Retrieved 2015-11-14.
  121. ^"PHP: RFC: class_constant_visibility". PHP.NET. 2015-10-27. Truy cập 2015-12-08. "PHP: rfc:class_constant_visibility". php.net. 2015-10-27. Retrieved 2015-12-08.
  122. ^"PHP: RFC: Đối tượng-Typehint". Wiki.php.net. "PHP: rfc:object-typehint". wiki.php.net.
  123. ^"PHP: rfc: libsodium". Wiki.php.net. "PHP: rfc:libsodium". wiki.php.net.
  124. ^"PHP: RFC: Cho phép-Abstract-Chức năng-Quan sát". Wiki.php.net. "PHP: rfc:allow-abstract-function-override". wiki.php.net.
  125. ^"PHP: RFC: tham số-No-type-phương sai". Wiki.php.net. "PHP: rfc:parameter-no-type-variance". wiki.php.net.
  126. ^"PHP: TODO: PHP73". Wiki.php.net. "PHP: todo:php73". wiki.php.net.
  127. ^"PHP: rfc: flex_heredoc_nowdoc_syntaxes". Wiki.php.net. "PHP: rfc:flexible_heredoc_nowdoc_syntaxes". wiki.php.net.
  128. ^"PHP: RFC: list_reference_assignment". Wiki.php.net. "PHP: rfc:list_reference_assignment". wiki.php.net.
  129. ^"PHP: RFC: di chuyển PCRE2". Wiki.php.net. "PHP: rfc:pcre2-migration". wiki.php.net.
  130. ^"PHP: Hrtime & nbsp; - Hướng dẫn sử dụng". PHP.NET. "PHP: hrtime – Manual". php.net.
  131. ^"Php 7.4.0 được phát hành!". PHP.NET. Truy cập 2019-11-28. "PHP 7.4.0 Released!". php.net. Retrieved 2019-11-28.
  132. ^"PHP: rfc: typed_properies_v2". Wiki.php.net. Truy cập 2019-04-04. "PHP: rfc:typed_properties_v2". wiki.php.net. Retrieved 2019-04-04.
  133. ^"PHP: rfc: preload". Wiki.php.net. Truy cập 2019-04-04. "PHP: rfc:preload". wiki.php.net. Retrieved 2019-04-04.
  134. ^"PHP: RFC: null_coalesce_equal_operator". Wiki.php.net. Truy cập 2019-04-04. "PHP: rfc:null_coalesce_equal_operator". wiki.php.net. Retrieved 2019-04-04.
  135. ^"PHP: RFC: Cải thiện-opensssl-Random-pseudo-byte". Wiki.php.net. Truy cập 2019-04-04. "PHP: rfc:improve-openssl-random-pseudo-bytes". wiki.php.net. Retrieved 2019-04-04.
  136. ^"PHP: rfc: ffi". Wiki.php.net. Truy cập 2019-04-05. "PHP: rfc:ffi". wiki.php.net. Retrieved 2019-04-05.
  137. ^"PHP: RFC: vĩnh viễn_hash_ext". Wiki.php.net. Truy cập 2019-04-05. "PHP: rfc:permanent_hash_ext". wiki.php.net. Retrieved 2019-04-05.
  138. ^"PHP: rfc: password_registry". Wiki.php.net. Truy cập 2019-04-05. "PHP: rfc:password_registry". wiki.php.net. Retrieved 2019-04-05.
  139. ^"PHP: RFC: MB_STR_SPLIT". Wiki.php.net. Truy cập 2019-04-05. "PHP: rfc:mb_str_split". wiki.php.net. Retrieved 2019-04-05.
  140. ^"PHP: rfc: tham chiếu_REFLECTION". Wiki.php.net. Truy cập 2019-04-05. "PHP: rfc:reference_reflection". wiki.php.net. Retrieved 2019-04-05.
  141. ^"PHP: RFC: DEVENTE-and-REMOVE-EXT-WDDX". Wiki.php.net. Truy cập 2019-04-05. "PHP: rfc:deprecate-and-remove-ext-wddx". wiki.php.net. Retrieved 2019-04-05.
  142. ^"PHP: RFC: Custom_Object_Serialization". Wiki.php.net. Truy cập 2019-04-05. "PHP: rfc:custom_object_serialization". wiki.php.net. Retrieved 2019-04-05.
  143. ^"PHP: TODO: PHP80". Wiki.php.net. Truy cập 2020-06-16. "PHP: todo:php80". wiki.php.net. Retrieved 2020-06-16.
  144. ^"PHP: rfc: negal_array_index". Wiki.php.net. Truy cập 2019-04-05. "PHP: rfc:negative_array_index". wiki.php.net. Retrieved 2019-04-05.
  145. ^"PHP RFC: Xác nhận các phương pháp tính trạng trừu tượng". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: Validation for abstract trait methods". wiki.php.net. Retrieved 14 August 2020.
  146. ^"PHP RFC: Chuỗi saner để so sánh số". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: Saner string to number comparisons". wiki.php.net. Retrieved 14 August 2020.
  147. ^"PHP RFC: chuỗi số saner". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: Saner numeric strings". wiki.php.net. Retrieved 14 August 2020.
  148. ^"PHP RFC: Kiểm tra loại nghiêm ngặt hơn cho các toán tử số học/bitwise". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: Stricter type checks for arithmetic/bitwise operators". wiki.php.net. Retrieved 14 August 2020.
  149. ^"PHP RFC: CẢNH BÁO CẢNH BÁO ĐỘNG CƠ". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: Reclassifying engine warnings". wiki.php.net. Retrieved 14 August 2020.
  150. ^"PHP: RFC: FORTENT_TYPE_ERRORS". Wiki.php.net. Truy cập 2019-04-05. "PHP: rfc:consistent_type_errors". wiki.php.net. Retrieved 2019-04-05.
  151. ^"PHP: RFC: LSP_ERRORS". Wiki.php.net. Truy cập 2019-05-26. "PHP: rfc:lsp_errors". wiki.php.net. Retrieved 2019-05-26.
  152. ^"PHP RFC: FLOAT độc lập địa phương vào chuỗi đúc". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: Locale-independent float to string cast". wiki.php.net. Retrieved 14 August 2020.
  153. ^"PHP RFC: Điều chỉnh cú pháp biến". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: Variable Syntax Tweaks". wiki.php.net. Retrieved 14 August 2020.
  154. ^"PHP RFC: Thuộc tính v2". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: Attributes V2". wiki.php.net. Retrieved 14 August 2020.
  155. ^"PHP RFC: Sửa đổi thuộc tính". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: Attribute Amendments". wiki.php.net. Retrieved 14 August 2020.
  156. ^"PHP RFC: Cú pháp thuộc tính ngắn hơn". Wiki.php.net. Truy cập 2020-06-20. "PHP RFC: Shorter Attribute Syntax". wiki.php.net. Retrieved 2020-06-20.
  157. ^"PHP RFC: Thay đổi cú pháp thuộc tính ngắn hơn". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: Shorter Attribute Syntax Change". wiki.php.net. Retrieved 14 August 2020.
  158. ^"PHP rfc: Các đối số được đặt tên". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: Named Arguments". wiki.php.net. Retrieved 14 August 2020.
  159. ^"PHP RFC: Biểu thức khớp V2". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: Match expression v2". wiki.php.net. Retrieved 14 August 2020.
  160. ^"PHP RFC: Khuyến khích thuộc tính của hàm tạo". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: Constructor Property Promotion". wiki.php.net. Retrieved 14 August 2020.
  161. ^"PHP RFC: Liên minh các loại 2.0". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: Union Types 2.0". wiki.php.net. Retrieved 14 August 2020.
  162. ^"PHP RFC: Loại hỗn hợp V2". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: Mixed Type v2". wiki.php.net. Retrieved 14 August 2020.
  163. ^"PHP RFC: Loại trả lại tĩnh". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: Static return type". wiki.php.net. Retrieved 14 August 2020.
  164. ^"PHP RFC: Bắt không bắt giữ". Wiki.php.net. Truy cập ngày 14 tháng 8 năm 2020. "PHP RFC: non-capturing catches". wiki.php.net. Retrieved 14 August 2020.
  165. ^Andre, Tyson. "PHP RFC: Luôn luôn có sẵn tiện ích mở rộng JSON". PHP. Truy cập ngày 25 tháng 10 năm 2020. Andre, Tyson. "PHP RFC: Always available JSON extension". PHP. Retrieved 25 October 2020.
  166. ^"PHP: TODO: PHP81". Wiki.php.net. Truy cập 2022-06-16. "PHP: todo:php81". wiki.php.net. Retrieved 2022-06-16.
  167. ^"PHP rfc: ký hiệu số nguyên octal rõ ràng". Wiki.php.net. Truy cập 2020-11-25. "PHP RFC: Explicit octal integer literal notation". wiki.php.net. Retrieved 2020-11-25.
  168. ^"PHP rfc: liệt kê". Wiki.php.net. Truy cập 2021-03-25. "PHP RFC: Enumerations". wiki.php.net. Retrieved 2021-03-25.
  169. ^"PHP: RFC: ReadOnly_ProperIES_V2". Wiki.php.net. Truy cập 2021-11-26. "PHP: rfc:readonly_properties_v2". wiki.php.net. Retrieved 2021-11-26.
  170. ^"PHP: rfc: first_class_callable_syntax". Wiki.php.net. Truy cập 2021-11-26. "PHP: rfc:first_class_callable_syntax". wiki.php.net. Retrieved 2021-11-26.
  171. ^"PHP: rfc: new_in_initializer". Wiki.php.net. Truy cập 2021-11-26. "PHP: rfc:new_in_initializers". wiki.php.net. Retrieved 2021-11-26.
  172. ^"PHP: RFC: Loại giao tiếp thuần túy". Wiki.php.net. Truy cập 2021-11-26. "PHP: rfc:pure-intersection-types". wiki.php.net. Retrieved 2021-11-26.
  173. ^"PHP: rfc: Noreturn_type". Wiki.php.net. Truy cập 2021-11-26. "PHP: rfc:noreturn_type". wiki.php.net. Retrieved 2021-11-26.
  174. ^"PHP: RFC: Final_Class_const". Wiki.php.net. Truy cập 2021-11-26. "PHP: rfc:final_class_const". wiki.php.net. Retrieved 2021-11-26.
  175. ^"PHP: RFC: Sợi". Wiki.php.net. Truy cập 2021-11-26. "PHP: rfc:fibers". wiki.php.net. Retrieved 2021-11-26.
  176. ^"PHP: TODO: PHP82". Wiki.php.net. Truy cập 2022-06-16. "PHP: todo:php82". wiki.php.net. Retrieved 2022-06-16.
  177. ^"PHP: RFC: ReadOnly_Classes". Wiki.php.net. Truy cập 2022-06-16. "PHP: rfc:readonly_classes". wiki.php.net. Retrieved 2022-06-16.
  178. ^"PHP: RFC: NULL-FALSE-STANDALONE-TYPES". Wiki.php.net. Truy cập 2022-06-16. "PHP: rfc:null-false-standalone-types". wiki.php.net. Retrieved 2022-06-16.
  179. ^"PHP: RFC: Loại đúng". Wiki.php.net. Truy cập 2022-06-16. "PHP: rfc:true-type". wiki.php.net. Retrieved 2022-06-16.
  180. ^"PHP: rfc: strtole-ascii". Wiki.php.net. Truy cập 2022-06-16. "PHP: rfc:strtolower-ascii". wiki.php.net. Retrieved 2022-06-16.
  181. ^"PHP: Elephpant". Ngày 4 tháng 10 năm 2014. Truy cập ngày 4 tháng 10 năm 2014. "PHP: ElePHPant". 4 Oct 2014. Retrieved 4 Oct 2014.
  182. ^"Chuyển hướng chuyển hướng". WWPHP-fb.github.io. "Redirecting…". wwphp-fb.github.io.
  183. ^"Sự ra đời của linh vật PHP - Người tạo ra Vincent Pontier Vinophpant tiết lộ câu chuyện có thật!". 7PHP.com. 2014-01-06. "The PHP Mascot's Birth - Creator Of The elePHPant Vincent Pontier Reveals The True Story!". 7php.com. 2014-01-06.
  184. ^"PHP: Elephpant". www.php.net. "PHP: ElePHPant". www.php.net.
  185. ^"Hướng dẫn thực địa về Elephpants". Afieldguidetoelephpants.net. "A Field Guide to Elephpants". afieldguidetoelephpants.net.
  186. ^"Tags & nbsp; - Hướng dẫn sử dụng". PHP.NET. Truy cập 2014-02-17. "tags – Manual". php.net. Retrieved 2014-02-17.
  187. ^ AB "PHP: RFC: Shortags". PHP.NET. 2008-04-03. Truy cập 2014-05-08.a b "PHP: rfc:shortags". php.net. 2008-04-03. Retrieved 2014-05-08.
  188. ^"PHP: Cú pháp cơ bản". Nhóm PHP. Truy cập 2008-02-22. "PHP: Basic syntax". The PHP Group. Retrieved 2008-02-22.
  189. ^"Tiêu chuẩn mã hóa cơ bản". Nhóm khả năng tương tác khung PHP. Truy cập 2016-01-03. "Basic Coding Standard". PHP Framework Interoperability Group. Retrieved 2016-01-03.
  190. ^"Echo & nbsp; - Hướng dẫn sử dụng". PHP.NET. Truy cập 2014-02-17. "echo – Manual". php.net. Retrieved 2014-02-17.
  191. ^"Mô tả các chỉ thị php.ini cốt lõi & nbsp; - hướng dẫn sử dụng". PHP.NET. 2002-03-17. Truy cập 2014-02-17. "Description of core php.ini directives – Manual". php.net. 2002-03-17. Retrieved 2014-02-17.
  192. ^"Trang hỗ trợ PHP đầu tiên của bạn". Nhóm PHP. Truy cập 2008-02-25. "Your first PHP-enabled page". The PHP Group. Retrieved 2008-02-25.
  193. ^Bray, Tim; et & nbsp; al. (26 tháng 11 năm 2008). "Hướng dẫn xử lý". Ngôn ngữ đánh dấu mở rộng (XML) 1.0 (Phiên bản thứ năm). W3C. Truy cập 2009-06-18. Bray, Tim; et al. (26 November 2008). "Processing Instructions". Extensible Markup Language (XML) 1.0 (Fifth Edition). W3C. Retrieved 2009-06-18.
  194. ^"Biến". Nhóm PHP. Truy cập 2008-03-16. "Variables". The PHP Group. Retrieved 2008-03-16.
  195. ^"Phân tách hướng dẫn". Nhóm PHP. Truy cập 2008-03-16. "Instruction separation". The PHP Group. Retrieved 2008-03-16.
  196. ^"Nhận xét". Nhóm PHP. Truy cập 2008-03-16. "Comments". The PHP Group. Retrieved 2008-03-16.
  197. ^"Số nguyên trong PHP, chạy với kéo và tính di động". Blog hiệu suất MySQL. Ngày 27 tháng 3 năm 2007 Truy cập 2007-03-28. "Integers in PHP, running with scissors, and portability". MySQL Performance Blog. March 27, 2007. Retrieved 2007-03-28.
  198. ^ abcde "loại". Nhóm PHP. Truy cập 2008-03-16.a b c d e "Types". The PHP Group. Retrieved 2008-03-16.
  199. ^"Chuỗi". Nhóm PHP. Truy cập 2008-03-21. "Strings". The PHP Group. Retrieved 2008-03-21.
  200. ^"Spl & nbsp; - tiêu chuẩn". PHP.NET. Ngày 16 tháng 3 năm 2009. Truy cập 2009-03-16. "SPL – StandardPHPLibrary". PHP.net. March 16, 2009. Retrieved 2009-03-16.
  201. ^ AB "Các chức năng do người dùng xác định (hướng dẫn sử dụng PHP)". PHP.NET. 2014-07-04. Truy cập 2014-07-07.a b "User-defined functions (PHP manual)". php.net. 2014-07-04. Retrieved 2014-07-07.
  202. ^ AB "Hàm biến (Hướng dẫn sử dụng PHP)". PHP.NET. 2014-07-04. Truy cập 2014-07-07.a b "Variable functions (PHP manual)". php.net. 2014-07-04. Retrieved 2014-07-07.
  203. ^"created_function () (hướng dẫn sử dụng php)". PHP.NET. 2022-04-06. Truy cập 2022-05-04. "create_function() (PHP manual)". php.net. 2022-04-06. Retrieved 2022-05-04.
  204. ^"Hàm ẩn danh (Hướng dẫn sử dụng PHP)". PHP.NET. 2014-07-04. Truy cập 2014-07-07. "Anonymous functions (PHP manual)". php.net. 2014-07-04. Retrieved 2014-07-07.
  205. ^"Hàm mũi tên (Hướng dẫn sử dụng PHP)". PHP.NET. Truy cập 2021-01-25. "Arrow Functions (PHP manual)". php.net. Retrieved 2021-01-25.
  206. ^Christian Seiler; Dmitry Stogov (2008-07-01). "Yêu cầu nhận xét: Chức năng Lambda và đóng cửa". PHP.NET. Truy cập 2014-07-07. Christian Seiler; Dmitry Stogov (2008-07-01). "Request for Comments: Lambda functions and closures". php.net. Retrieved 2014-07-07.
  207. ^ AB "Php & nbsp; 5 Tài liệu tham khảo đối tượng". mjtsai.com. Truy cập 2008-03-16.a b "PHP 5 Object References". mjtsai.com. Retrieved 2008-03-16.
  208. ^"Các lớp và đối tượng (PHP & nbsp; 5)". Nhóm PHP. Truy cập 2008-03-16. "Classes and Objects (PHP 5)". The PHP Group. Retrieved 2008-03-16.
  209. ^"Nhân bản đối tượng". Nhóm PHP. Truy cập 2008-03-16. "Object cloning". The PHP Group. Retrieved 2008-03-16.
  210. ^"Khả năng hiển thị (Hướng dẫn sử dụng PHP)". theserverpages.com. 2005-05-19. Truy cập 2010-08-26. "Visibility (PHP Manual)". theserverpages.com. 2005-05-19. Retrieved 2010-08-26.
  211. ^"Làm thế nào để ngôn ngữ máy tính hoạt động?". Truy cập 2009-11-04. "How do computer languages work?". Retrieved 2009-11-04.
  212. ^Gilmore, W. Jason (2006-01-23). Bắt đầu PHP và MySQL 5: Từ người mới đến chuyên nghiệp. Apress. p. & nbsp; 43. ISBN & NBSP; 1590595521. Gilmore, W. Jason (2006-01-23). Beginning PHP and MySQL 5: From Novice to Professional. Apress. p. 43. ISBN 1590595521.
  213. ^"[Bầu chọn] Tích hợp Trình tối ưu hóa Zend+ vào phân phối PHP". news.php.net. Truy cập 2013-03-08. "[VOTE] Integrating Zend Optimizer+ into the PHP distribution". news.php.net. Retrieved 2013-03-08.
  214. ^"Bộ nhớ cache PHP thay thế". PHP.NET. Truy cập 2013-09-21. "Alternative PHP Cache". PHP.net. Retrieved 2013-09-21.
  215. ^"Chúng tôi là 98,5% (và 16%)« & nbsp; máy ảo hiphop ". hhvm.com. Tháng 12 năm 2013. Truy cập 2014-02-23. "We are the 98.5% (and the 16%) « HipHop Virtual Machine". hhvm.com. December 2013. Retrieved 2014-02-23.
  216. ^"Php dứt khoát 5.6, 7.0, 7.1, 7.2 & 7.3 điểm chuẩn (2019)". 2019-01-14. Truy cập 2019-04-19. "The Definitive PHP 5.6, 7.0, 7.1, 7.2 & 7.3 Benchmarks (2019)". 2019-01-14. Retrieved 2019-04-19.
  217. ^Krill, Paul (2017-09-20). "Quên PHP! Thay vào đó, động cơ HHVM của Facebook chuyển sang hack". Infoworld. Truy cập 2019-02-06. Krill, Paul (2017-09-20). "Forget PHP! Facebook's HHVM engine switches to Hack instead". InfoWorld. Retrieved 2019-02-06.
  218. ^"Thông báo về GitHub loại bỏ hỗ trợ HPHPC". GitHub. Truy cập 2013-05-24. "Announcement on GitHub removing HPHPc support". GitHub. Retrieved 2013-05-24.
  219. ^"Giấy phép PHP, phiên bản 3.01". Truy cập 2010-05-20. "The PHP License, version 3.01". Retrieved 2010-05-20.
  220. ^"Giấy phép phần mềm không tương thích GPL, miễn phí". Giấy phép và ý kiến ​​khác nhau về họ. Quỹ phần mềm miễn phí. Truy cập 2011-01-03. "GPL-Incompatible, Free Software Licenses". Various Licenses and Comments about Them. Free Software Foundation. Retrieved 2011-01-03.
  221. ^"PHP: Liệt kê chức năng và phương pháp & nbsp; - Hướng dẫn sử dụng". Nhóm PHP. Truy cập 2015-01-14. "PHP: Function and Method listing – Manual". The PHP Group. Retrieved 2015-01-14.
  222. ^"Giới thiệu & nbsp; - Hướng dẫn sử dụng". PHP.NET. 2013-06-07. Truy cập 2013-06-13. "Introduction – Manual". php.net. 2013-06-07. Retrieved 2013-06-13.
  223. ^Darryl Patterson (5 tháng 8 năm 2004). "Đơn giản hóa logic kinh doanh với php dataObjects & nbsp; - O'Reilly Media". IBM.com. Truy cập ngày 16 tháng 12 năm 2014. Darryl Patterson (5 August 2004). "Simplify Business Logic with PHP DataObjects — O'Reilly Media". ibm.com. Retrieved 16 December 2014.
  224. ^"Ibm & nbsp; - Hoa Kỳ". Truy cập ngày 16 tháng 12 năm 2014. "IBM — United States". Retrieved 16 December 2014.
  225. ^"Năm vấn đề cơ sở dữ liệu PHP phổ biến". IBM.com. 2006-08-01. Truy cập 2013-06-13. "Five common PHP database problems". ibm.com. 2006-08-01. Retrieved 2013-06-13.
  226. ^"IBM Redbooks & nbsp; - Phát triển các ứng dụng PHP cho các máy chủ dữ liệu IBM". Redbooks.ibm.com. Truy cập ngày 16 tháng 12 năm 2014. "IBM Redbooks — Developing PHP Applications for IBM Data Servers". redbooks.ibm.com. Retrieved 16 December 2014.
  227. ^"Php [kiến trúc sư] Tạp chí - Tạp chí cho các lập trình viên PHP". www.phparch.com. "php[architect] Magazine - The Journal for PHP Programmers". www.phparch.com.
  228. ^Krill, Paul (19 tháng 10 năm 2005). "PHP bắt tại các doanh nghiệp, ganh đua với Java". Infoworld. Được lưu trữ từ bản gốc vào ngày 13 tháng 7 năm 2014. Krill, Paul (19 October 2005). "PHP catching on at enterprises, vying with Java". InfoWorld. Archived from the original on 13 July 2014.
  229. ^"Tham khảo chéo:/PHP_5_4/ext/Standard/". PHP.NET. Được lưu trữ từ bản gốc vào ngày 16 tháng 3 năm 2012. Truy cập ngày 16 tháng 12 năm 2014. "Cross Reference: /PHP_5_4/ext/standard/". php.net. Archived from the original on 16 March 2012. Retrieved 16 December 2014.
  230. ^"Phát triển tiện ích mở rộng PHP tùy chỉnh". devnewz.com. 2002-09-09. Được lưu trữ từ bản gốc vào năm 2008-02-18. Truy cập 2008-02-25. "Developing Custom PHP Extensions". devnewz.com. 2002-09-09. Archived from the original on 2008-02-18. Retrieved 2008-02-25.
  231. ^"Tại sao Zephir?". Zephir-lang.com. 2015-10-20. Truy cập 2015-12-14. "Why Zephir?". zephir-lang.com. 2015-10-20. Retrieved 2015-12-14.
  232. ^"Tín dụng PHP". Truy cập 2018-12-16. "PHP Credits". Retrieved 2018-12-16.
  233. ^"Tìm hiểu PHP thông qua đào tạo PHP và chứng nhận PHP". www.zend.com. Truy cập 2020-11-16. "Learn PHP Via PHP Training and PHP Certification". www.zend.com. Retrieved 2020-11-16.
  234. ^"Cuộc sống mới của PHP - Quỹ PHP | Blog phpstorm". Blog JetBrains. Truy cập 2022-06-16. "The New Life of PHP – The PHP Foundation | The PhpStorm Blog". The JetBrains Blog. Retrieved 2022-06-16.
  235. ^ ab "Cài đặt chung". PHP.NET. Truy cập 2013-09-22.a b "General Installation Considerations". php.net. Retrieved 2013-09-22.
  236. ^"Lưu trữ tin tức: PHP & nbsp; 5.3.3 được phát hành!". PHP.NET. 2010-07-22. "News Archive: PHP 5.3.3 Released!". php.net. 2010-07-22.
  237. ^"Trình quản lý quy trình Fastcgi (FPM)". PHP.NET. Truy cập 2013-09-22. "FastCGI Process Manager (FPM)". php.net. Retrieved 2013-09-22.
  238. ^"Sử dụng dòng lệnh: Giới thiệu". PHP.NET. Truy cập 2013-09-22. "Command line usage: Introduction". php.net. Retrieved 2013-09-22.
  239. ^"Sử dụng dòng lệnh: Sự khác biệt với các SAPI khác". PHP.NET. Truy cập 2013-09-22. "Command line usage: Differences to other SAPIs". php.net. Retrieved 2013-09-22.
  240. ^ ab "Cài đặt chung". PHP.NET. Truy cập 2013-09-22.a b "General Installation Considerations". php.net. Retrieved 2013-09-22.
  241. ^"Lưu trữ tin tức: PHP & nbsp; 5.3.3 được phát hành!". PHP.NET. 2010-07-22. "PHP: Apache 2.x on Microsoft Windows". php.net. Archived from the original on 2013-09-26. Retrieved 2013-09-22.
  242. ^"Sử dụng dòng lệnh: Giới thiệu". PHP.NET. Truy cập 2013-09-22. "Command line usage: Introduction". php.net. Retrieved 2013-09-22.
  243. ^"Sử dụng dòng lệnh: Sự khác biệt với các SAPI khác". PHP.NET. Truy cập 2013-09-22. "Installing PHP-GTK 2". php.net. Retrieved 2013-09-22.
  244. ^"PHP: Apache 2.x trên Microsoft Windows". PHP.NET. Được lưu trữ từ bản gốc vào năm 2013-09-26. Truy cập 2013-09-22. "AWS SDK for PHP". aws.amazon.com. Retrieved 2014-03-06.
  245. ^"Cài đặt PHP-GTK 2". PHP.NET. Truy cập 2013-09-22. "Windows Azure SDK for PHP — Interoperability Bridges and Labs Center". interoperabilitybridges.com. Archived from the original on 2014-03-20. Retrieved 2014-03-06.
  246. ^"AWS SDK cho PHP". aws.amazon.com. Truy cập 2014-03-06. "Runtime configuration: Table of contents". php.net. Retrieved 2013-09-22.
  247. ^"Windows Azure SDK cho PHP & NBSP; - Cầu trung tâm khả năng tương tác và Trung tâm phòng thí nghiệm". InteroperabilityBridges.com. Được lưu trữ từ bản gốc vào năm 2014-03-20. Truy cập 2014-03-06. "php.ini directives: List of php.ini directives". php.net. Retrieved 2013-09-22.
  248. ^"Cấu hình thời gian chạy: Mục lục". PHP.NET. Truy cập 2013-09-22. "Runtime configuration: The configuration file". PHP.net. Retrieved 2013-09-22.
  249. ^"Chỉ thị php.ini: Danh sách chỉ thị php.ini". PHP.NET. Truy cập 2013-09-22. "php.ini directives: List of php.ini sections". PHP.net. Retrieved 2013-09-22.
  250. ^"Cấu hình thời gian chạy: Tệp cấu hình". PHP.NET. Truy cập 2013-09-22. "Runtime configuration: Where a configuration setting may be set". PHP.net. Retrieved 2013-09-22.
  251. ^"Chỉ thị php.ini: Danh sách các phần php.ini". PHP.NET. Truy cập 2013-09-22. "PHP Manual Image Processing and GD;". php.net. Retrieved 2011-04-09.
  252. ^"Cấu hình thời gian chạy: trong đó cài đặt cấu hình có thể được đặt". PHP.NET. Truy cập 2013-09-22. "PHP Server-Side Scripting Language". Indiana University. 2007-04-04. Archived from the original on 2016-01-21. Retrieved 2008-02-25.
  253. ^"Xử lý hình ảnh thủ công PHP và GD;". PHP.NET. Truy cập 2011-04-09. "JavaServer Pages Technology — JavaServer Pages Comparing Methods for Server-Side Dynamic Content White Paper". Sun Microsystems. Retrieved 2008-02-25.
  254. ^"Ngôn ngữ kịch bản phía máy chủ php". Đại học Indiana. 2007-04-04. Được lưu trữ từ bản gốc vào năm 2016-01-21. Truy cập 2008-02-25. "Five simple ways to tune your LAMP application". IBM. 2011-01-25.
  255. ^"Javaserver Pages Technology & nbsp;-Trang Javaserver so sánh các phương thức cho giấy trắng nội dung phía máy chủ". Microsystems mặt trời. Truy cập 2008-02-25. "PHP at the core: Extension structure". PHP.net. Retrieved 2013-09-22.
  256. ^"Năm cách đơn giản để điều chỉnh ứng dụng đèn của bạn". IBM. 2011-01-25. "PHP at the core: The "counter" Extension – A Continuing Example". PHP.net. Retrieved 2013-09-22.
  257. ^"PHP ở cốt lõi: Cấu trúc mở rộng". PHP.NET. Truy cập 2013-09-22. "Extension Writing Part I: Introduction to PHP and Zend". Zend Technologies. 2005-03-01. Archived from the original on 2013-09-24. Retrieved 2013-09-22.
  258. ^"PHP ở lõi: tiện ích mở rộng" bộ đếm "& nbsp; - một ví dụ tiếp tục". PHP.NET. Truy cập 2013-09-22. "Extension Writing Part II: Parameters, Arrays, and ZVALs". Zend Technologies. 2005-06-06. Archived from the original on 2013-09-26. Retrieved 2013-09-22.
  259. ^"Viết mở rộng Phần I: Giới thiệu về PHP và Zend". Công nghệ Zend. 2005-03-01. Được lưu trữ từ bản gốc vào năm 2013-09-24. Truy cập 2013-09-22. "Extension Writing Part II: Parameters, Arrays, and ZVALs (continued)". Zend Technologies. 2005-06-06. Archived from the original on 2013-09-26. Retrieved 2013-09-22.
  260. ^"Viết mở rộng Phần II: tham số, mảng và zvals". Công nghệ Zend. 2005-06-06. Được lưu trữ từ bản gốc vào năm 2013-09-26. Truy cập 2013-09-22. "Extension Writing Part III: Resources". Zend Technologies. 2006-05-12. Archived from the original on 2013-09-26. Retrieved 2013-09-22.
  261. ^"Viết mở rộng Phần II: Các tham số, mảng và zvals (tiếp theo)". Công nghệ Zend. 2005-06-06. Được lưu trữ từ bản gốc vào năm 2013-09-26. Truy cập 2013-09-22. "Wrapping C++ Classes in a PHP Extension". Zend Technologies. 2009-04-22. Archived from the original on 2013-09-20. Retrieved 2013-09-22.
  262. ^"Viết mở rộng Phần III: Tài nguyên". Công nghệ Zend. 2006-05-12. Được lưu trữ từ bản gốc vào năm 2013-09-26. Truy cập 2013-09-22. "Extending PHP with C++?". Stack Overflow. Retrieved 2013-09-22.
  263. ^"Bao bọc các lớp C ++ trong tiện ích mở rộng PHP". Công nghệ Zend. 2009-04-22. Được lưu trữ từ bản gốc vào năm 2013-09-20. Truy cập 2013-09-22. "How can I use C++ code to interact with PHP?". Stack Overflow. Retrieved 2013-09-22.
  264. ^"Mở rộng PHP với C ++?". Stack Overflow. Truy cập 2013-09-22. Golemon, Sara (2006). Extending and Embedding PHP. ISBN 978-0-672-32704-9.
  265. ^"Làm thế nào tôi có thể sử dụng mã C ++ để tương tác với PHP?". Stack Overflow. Truy cập 2013-09-22. "Bug Request #46919: Multi threading". PHP.net. Retrieved 2013-09-22.
  266. ^Golemon, Sara (2006). Mở rộng và nhúng PHP. ISBN & NBSP; 978-0-672-32704-9. "pthreads: Introduction (PHP Manual)". PHP.net. Retrieved 2013-09-22.
  267. ^"Yêu cầu lỗi #46919: đa luồng". PHP.NET. Truy cập 2013-09-22. "PECL :: Package :: pthreads". pecl.php.net. Retrieved 2014-02-09.
  268. ^"Pthreads: Giới thiệu (Hướng dẫn sử dụng PHP)". PHP.NET. Truy cập 2013-09-22. "Manual:Installation requirements#PHP". MediaWiki. 2010-01-25. Retrieved 2010-02-26. PHP is the programming language in which MediaWiki is written [...]
  269. ^"Pecl & nbsp; :: Gói & nbsp; :: pthreads". PECL.PHP.NET. Truy cập 2014-02-09. "About WordPress". Retrieved 2010-02-26. WordPress was [...] built on PHP
  270. ^"Hướng dẫn sử dụng: Yêu cầu cài đặt#PHP". MediaWiki. 2010-01-25. Truy cập 2010 / 02-26. PHP là ngôn ngữ lập trình trong đó MediaWiki được viết [...] Kempkens, Alex. "Joomla! — Content Management System to build websites & apps".
  271. ^"Giới thiệu về WordPress". Truy cập 2010 / 02-26. WordPress là [...] được xây dựng trên PHP "PHP and Drupal". Drupal.org. 16 September 2007. Retrieved 2010-06-13.
  272. ^Kempkens, Alex. "Joomla! & NBSP; - Hệ thống quản lý nội dung để xây dựng trang web & ứng dụng". "About". Moodle.org. Retrieved 2009-12-20.
  273. ^"Php và Drupal". Drupal.org. 16 tháng 9 năm 2007 Truy cập 2010-06-13. "Server requirements of SilverStripe". Archived from the original on 28 November 2014. Retrieved 13 October 2014. SilverStripe requires PHP 5.3.2+
  274. ^"Giới thiệu". Moodle.org. Truy cập 2009-12-20. Ide, Andy (2013-01-31). "PHP just grows & grows". Retrieved 2013-04-01.
  275. ^"Yêu cầu máy chủ của Silverstripe". Được lưu trữ từ bản gốc vào ngày 28 tháng 11 năm 2014. Truy cập ngày 13 tháng 10 năm 2014. Silverstripe yêu cầu PHP & NBSP; 5.3.2+ "Usage Statistics and Market Share of PHP for Websites, March 2021". w3techs.com. Retrieved 2021-03-28.
  276. ^Ide, Andy (2013-01-31). "PHP chỉ phát triển và phát triển". Truy cập 2013-04-01. "National Vulnerability Database (NVD) Search Vulnerabilities Statistics". Retrieved 2019-11-22.
  277. ^"Thống kê sử dụng và thị phần của PHP cho các trang web, tháng 3 năm 2021". W3Techs.com. Truy cập 2021-03-28. "PHP: rfc:taint". wiki.php.net.
  278. ^"Cơ sở dữ liệu lỗ hổng quốc gia (NVD) Thống kê lỗ hổng tìm kiếm". Truy cập 2019-11-22. "Developer Meeting Notes, Nov. 2005".
  279. ^"PHP: RFC: Taint". Wiki.php.net. "Taint mode decision, November 2007". Archived from the original on 2009-02-26.
  280. ^"Ghi chú cuộc họp nhà phát triển, tháng 11 năm 2005". "Hardened-PHP Project". 2008-08-15. Archived from the original on 2019-02-24. Retrieved 2019-08-22.
  281. ^"Quyết định chế độ Taint, tháng 11 năm 2007". Được lưu trữ từ bản gốc vào năm 2009-02-26. "Security: Using Register Globals". PHP Manual. PHP.net. Retrieved 2013-09-22.
  282. ^"Dự án Hardened-php". 2008-08-15. Được lưu trữ từ bản gốc vào năm 2019-02-24. Truy cập 2019-08-22. "Magic Quotes". PHP Manual. PHP.net. Retrieved 2014-01-17.
  283. ^"Bảo mật: Sử dụng đăng ký Globals". Hướng dẫn sử dụng PHP. PHP.NET. Truy cập 2013-09-22. "'engine' configuration directive". PHP: Runtime Configuration. PHP.net. Retrieved 2014-02-13.
  284. ^"Khai thác bảo mật PHP với hình ảnh GIF". 2007-06-22. Được lưu trữ từ bản gốc vào năm 2013-09-27. Truy cập 2013-09-22. "PHP Security Exploit With GIF Images". 2007-06-22. Archived from the original on 2013-09-27. Retrieved 2013-09-22.
  285. ^"Khai thác bảo mật PHP với hình ảnh GIF". Blog của lớp PHP. 2007-06-20. Truy cập 2013-09-22. "PHP security exploit with GIF images". PHP Classes blog. 2007-06-20. Retrieved 2013-09-22.
  286. ^"Vượt qua PHP độc hại thông qua getImagesize ()". 2007-06-04. Được lưu trữ từ bản gốc vào năm 2013-09-21. Truy cập 2013-09-22. "Passing Malicious PHP Through getimagesize()". 2007-06-04. Archived from the original on 2013-09-21. Retrieved 2013-09-22.
  287. ^"'enable_dl' Chỉ thị cấu hình". PHP: Cấu hình thời gian chạy. PHP.NET. Truy cập 2014-02-13. "'enable_dl' configuration directive". PHP: Runtime Configuration. PHP.net. Retrieved 2014-02-13.
  288. ^"Tham khảo chức năng PHP: dl ()". PHP.NET. Truy cập 2013-09-22. "PHP function reference: dl()". PHP.net. Retrieved 2013-09-22.
  289. ^"Chủ nhà của tôi sẽ không sửa chữa Trojan của họ". Webhosting nói chuyện. Truy cập 2013-09-22. "My host won't fix their Trojan". WebHosting Talk. Retrieved 2013-09-22.
  290. ^Raz0r (25 tháng 1 năm 2013). "Diễn đàn máy đơn giản Raz0r (25 January 2013). "Simple Machines Forum <= 2.0.3 Admin Password Reset".
  291. ^Nibble an ninh. "TYPO3-SA-2010-020, typo3-SA-2010-022 đã giải thích". Nibble Security. "TYPO3-SA-2010-020, TYPO3-SA-2010-022 EXPLAINED".
  292. ^" Ahack.ru (bằng tiếng Nga). "Криптостойкость и небезопасное сравнение". Ahack.ru (in Russian).
  293. ^"Các nhà khai thác so sánh". PHP.NET. "Comparison operators". PHP.net.
  294. ^Krawchot, Pawel (2013). "Hầu hết các cuộc tấn công phổ biến vào các ứng dụng web". Ipsec.pl. Được lưu trữ từ bản gốc vào năm 2015-04-15. Truy cập 2015-04-15. Krawczyk, Pawel (2013). "Most common attacks on web applications". IPSec.pl. Archived from the original on 2015-04-15. Retrieved 2015-04-15.
  295. ^Krawchot, Pawel (2013). "Vậy các lỗ hổng ứng dụng" quan trọng nhất "là gì? Trên Top 10 OWASP mới". Ipsec.pl. Truy cập 2015-04-15. Krawczyk, Pawel (2013). "So what are the "most critical" application flaws? On new OWASP Top 10". IPSec.pl. Retrieved 2015-04-15.
  296. ^"Thống kê sử dụng và thị phần của PHP cho các trang web, tháng 12 năm 2020". W3Techs.com. Truy cập 2020-12-08. "Usage Statistics and Market Share of PHP for Websites, December 2020". w3techs.com. Retrieved 2020-12-08.
  297. ^"Thống kê sử dụng Php phiên bản 5 cho các trang web". "Usage statistics of PHP Version 5 for websites".
  298. ^"Tấn công ngẫu nhiên chống lại các ứng dụng PHP". "Randomness Attacks Against PHP Applications".

Đọc thêm [Chỉnh sửa][edit]

Hướng dẫn on which platform php runs? - php chạy trên nền tảng nào?

Tệp âm thanh này được tạo từ bản sửa đổi của bài viết này ngày 23 & NBSP; tháng 11 & NBSP; 2011 và không phản ánh các chỉnh sửa tiếp theo.

  • Ford, Paul (ngày 11 tháng 6 năm 2015). "Mã là gì?". Bloomberg Businessweek. Tối thiểu tuyệt đối tôi phải biết về PHP là gì?

Liên kết bên ngoài [Chỉnh sửa][edit]

  • Trang web chính thức
    Hướng dẫn on which platform php runs? - php chạy trên nền tảng nào?
  • PHP tại Curlie

PHP có thể được chạy trên bất kỳ nền tảng nào không?

PHP có thể được sử dụng trên tất cả các hệ điều hành chính, bao gồm Linux, nhiều biến thể UNIX (bao gồm HP-UX, Solaris và OpenBSD), Microsoft Windows, MacOS, RISC OS và có lẽ là các biến số khác. PHP cũng có hỗ trợ cho hầu hết các máy chủ web ngày nay.. PHP also has support for most of the web servers today.

PHP có chạy trong trình duyệt hoặc máy chủ không?

Thay vào đó, bạn cần PHP trên một máy chủ web.Đó là máy chủ web, không phải trình duyệt web có thể tương tác với trình thông dịch PHP.Trình duyệt của bạn có thể tự mình xử lý HTML, nhưng nó phải đưa ra yêu cầu đến máy chủ web để xử lý các tập lệnh PHP.web server. It's the web server—not the web browser—that can interact with a PHP interpreter. Your browser can handle HTML on its own, but it has to make a request to a web server to deal with PHP scripts.

Phần mềm nào được sử dụng để chạy các chương trình PHP?

PHP là ngôn ngữ kịch bản phía máy chủ phổ biến và được sử dụng rộng rãi nhất để phát triển web.Tuy nhiên, nó yêu cầu một máy chủ web chạy ngay cả một trang web được phát triển cục bộ.Có nhiều phần mềm máy chủ web khác nhau để thiết lập máy chủ web địa phương của chúng tôi.Trong số đó, PHP XAMPP và Wamperver là phổ biến nhất.PHP XAMPP and WampServer are the most popular.

Nền tảng PHP là gì?

PHP, hoặc bộ tiền xử lý siêu văn bản (trang chủ cá nhân ban đầu), là ngôn ngữ kịch bản phía máy chủ nguồn mở được sử dụng để phát triển các trang web động và ứng dụng web.Nó cũng cực kỳ phổ biến - hơn 75% tất cả các trang web vẫn đang sử dụng PHP vào tháng 10 năm 2022, không có dấu hiệu chậm lại bất cứ lúc nào sớm.an open-source server-side scripting language used for developing dynamic websites and web applications. It's extremely popular, too — more than 75% of all websites were still using PHP as of October 2022, with no signs of slowing down any time soon.