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

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

8.1.12 / 2022-10-27

8.2.0 beta / 2022-07-21

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

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

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

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

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

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

History[edit][edit]

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

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

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

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





  Hey, you are using Netscape!




  Sorry, that record does not exist

  Welcome !
  You have  credits left in your account.


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Nhiều cơ chế lỗi PHP cũ hoặc có thể phục hồi được thay thế bằng các ngoại lệ hướng đối tượng hiện đại. [53]
  • Cú pháp để thay đổi 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à
    
        
    
    
    1 mới và loại
    
    
        
            PHP "Hello, World!" program
        
        
            
        
    
    
    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]

    
    
        
            PHP "Hello, World!" program
        
        
            
        
    
    
    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

    
    
        
            PHP "Hello, World!" program
        
        
            
        
    
    
    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
    
    
        
            PHP "Hello, World!" program
        
        
            
        
    
    
    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

    
    
        
            PHP "Hello, World!" program
        
        
            
        
    
    
    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
      
      
          
              PHP "Hello, World!" program
          
          
              
          
      
      
      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
      
      
          
              PHP "Hello, World!" program
          
          
              
          
      
      
      9 từ các giao diện và bổ sung giao diện
      
      
      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,
      
      
      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
      
      
      2 cho các hàm và hằng số, trình gỡ lỗi
      
      
      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]

      Linh vật Elephpant, PHP

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

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

      Syntax[edit][edit]

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

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

      
      
          
              PHP "Hello, World!" program
          
          
              
          
      
      

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

      
      
      7 được bỏ qua như được ưa thích trong các tệp có chứa mã PHP thuần túy. [186]

      
      
      8 để mở và
      
      
      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,

      
      
      8 và
      
      
      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.

      
      

      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
      
      
      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ữ

Bài Viết Liên Quan

Chủ Đề