Làm thế nào để giá vé PHP5 với các phiên bản trước của ngôn ngữ


8

Tôi muốn học PHP để phát triển web nhưng đã bị thu hút vì những bình luận như sau * :

  • PHP là tốt nhưng tạo mã spaghetti
  • PHP là tốt nhưng Python là tài liệu kết hôn
  • PHP thiếu những thứ bạn có trong các ngôn ngữ khác như C # hoặc Java

Nhưng đối với PHP5 tôi đã thấy một số ý kiến ​​đầy hứa hẹn. Vì vậy, câu hỏi của tôi là: Làm thế nào để PHP5 có giá trị với các phiên bản trước đó của ngôn ngữ và bây giờ nó có đủ tốt để học phát triển web không.

* Nhận xét chỉ để tham khảo không kích động một cuộc chiến ngọn lửa. Không có so sánh PHP với các ngôn ngữ khác được yêu cầu ở đây. Hãy bình luận chỉ trên PHP5 và cách so sánh với các phiên bản trước.


8
PHP không tạo mã spaghetti - lập trình viên PHP xấu tạo mã spaghetti
HorusKol

Tại sao bạn bao gồm các nhận xét về PHP và các ngôn ngữ khác và cách chúng gây ra sự nghi ngờ nhưng không muốn có bất kỳ thảo luận nào về các câu trả lời này?
phant0m

Câu trả lời:


17

Khi thảo luận về ngôn ngữ, hai trích dẫn Stroustrup này luôn xuất hiện trong tâm trí:

Bất cứ ai đến với bạn và nói rằng anh ta có một ngôn ngữ hoàn hảo là ngây thơ hoặc là một người bán hàng.

Chỉ có hai loại ngôn ngữ: những ngôn ngữ mà mọi người phàn nàn và những ngôn ngữ không ai sử dụng.

Bây giờ đến câu hỏi trong tầm tay. Hầu hết sự ghét bỏ chủ yếu nhắm vào PHP4. PHP5 được phát hành lần đầu tiên vào tháng 7 năm 2004 (bản beta một năm trước đó) và phiên bản cuối cùng của PHP4 là 4.4.9 được phát hành vào tháng 8 năm 2008 . Không có lý do hợp lệ để sử dụng PHP4 nữa, trừ khi tất nhiên bạn duy trì một số ứng dụng cũ. PHP4 không còn được hỗ trợ bởi nhóm PHP và tất cả chúng ta đều hy vọng nó sẽ biến mất sớm.

Khoảng cách giữa hai phiên bản lớn hơn thường là giữa hai phiên bản chính, vì công cụ đằng sau trình thông dịch được viết lại từ đầu và bao gồm một mô hình đối tượng mới. Việc phát hành PHP5 gần như trùng khớp với việc phát hành MySQL5, một đại tu lớn của MySQL. PHP thường được kết hợp với MySQL và phiên bản thứ năm của cả hai đã giải quyết một số vấn đề và đưa chúng đến tốc độ với sự cạnh tranh. MySQL cũng chịu sự bình luận của FUD , nhưng, đó là cơ sở dữ liệu đằng sau AdWords của Google .

PHP 5.3 là một bản phát hành chính trong mọi thứ trừ tên. Rất nhiều tính năng dành cho PHP6 được tìm thấy trong 5.3 và cho mỗi 5.2 nhà phát triển ngoài đó tôi khuyên bạn nên chuyển sang 5.3+ sớm hơn sau này. Bản phát hành hiện tại, 5.4, bao gồm một số tính năng tuyệt vời (trong số những tính năng khác):

Bây giờ cho ý kiến ​​cụ thể của bạn:

PHP là tốt nhưng tạo mã spaghetti

Điều đó hoàn toàn không đúng. Không có ngôn ngữ nào tạo ra bất kỳ loại mã nào, luôn luôn tùy thuộc vào nhà phát triển, mã spaghetti có thể có ở mọi ngôn ngữ ngoài kia. Mặc dù sự thật là PHP có rào cản gia nhập rất thấp so với các ngôn ngữ phổ biến khác, do đó các nhà phát triển thiếu kinh nghiệm viết mã xấu (nhưng hoạt động) sẽ dễ dàng hơn rất nhiều. Nhưng đó là một tác dụng phụ của mọi ngôn ngữ dễ học.

Hơn nữa, PHP không thực thi bất kỳ phong cách hoặc mô hình cụ thể nào và bạn luôn phải quyết định những việc cần làm. Tôi đã luôn nghĩ rằng đây là một điều tốt, trong khi những người khác coi đó là một điểm chỉ trích hợp lệ. Bạn sẽ phải tự quyết định.

PHP là tốt nhưng Python là tài liệu kết hôn

PHP thiếu những thứ bạn có trong các ngôn ngữ khác như C # hoặc JAVA

Có nó làm. Và ngôn ngữ đa năng X thiếu rất nhiều thứ bạn có trong PHP. Giống như có thể di động trên các hệ điều hành VÀ trên các máy chủ http và hỗ trợ cho mọi thư viện bên thứ ba có thể tưởng tượng sẽ hữu ích trong môi trường phát triển web. Bạn phải hiểu rằng PHP không thiếu bất cứ thứ gì quan trọng , nếu nó đã chết từ lâu. Sự so sánh giữa ngôn ngữ đa mục đích X và các ngôn ngữ đa mục đích khác với PHP là một ngụy biện, táo và cam. Mặc dù PHP cung cấp một số phương tiện để hỗ trợ ý tưởng rằng đó là mục đích chung, nhưng không phải, đó là ngôn ngữ web.

Bạn phải nhớ rằng con đường tiến hóa của PHP khá khác biệt so với ngôn ngữ có mục đích chung X : PHP phát triển và phát triển, nó không được thiết kế. Mỗi khi một tính năng được thêm vào ngôn ngữ là không cần thiết thực tế, không phù hợp với một số lý tưởng tưởng tượng về những gì một ngôn ngữ nên được. Ngôn ngữ là công cụ đầu tiên và quan trọng nhất, và PHP là hoàn hảo như vậy.

Tôi không có bất cứ điều gì chống lại ngôn ngữ có mục đích chung X , tôi là tất cả để chọn công cụ phù hợp cho công việc. Tôi đã luôn luôn trộn lẫn và kết hợp, và tôi cũng đang mã hóa bằng Java và Python, đôi khi song song với PHP. Nhưng PHP là người duy nhất tôi từng nghĩ sẽ kết hôn. :)

Nếu bạn đang xem xét bắt đầu với PHP, tất nhiên bạn nên bắt đầu với phiên bản ổn định mới nhất, giống như bất kỳ ngôn ngữ nào khác.


Tôi sẽ thêm một số điểm không tương thích giữa PHP4 và 5. Bạn đã quên bộ sưu tập Rác cho PHP 5.3.
deadalnix

1
@deadalnix Tôi không thêm sự không tương thích giữa PHP4 và PHP5, vì tôi nghĩ rằng một danh sách như vậy chỉ hữu ích nếu bạn đang xem xét sử dụng PHP4. Quan điểm của tôi là không sử dụng PHP4 vì bất kỳ lý do gì, chỉ vì nó quá cũ (PHP5 đã tồn tại hơn 3 năm). Ngoài ra, tôi không quên Bộ sưu tập rác, tôi không có ý định tạo một danh sách dứt khoát về những gì mới trong PHP5.3 (danh sách như vậy có thể được tìm thấy trong hướng dẫn), chỉ để làm nổi bật một số tính năng đó trong ngữ cảnh câu hỏi.
yannis

6

PHP đã "đủ tốt" để phát triển web trong một thời gian dài . Như với bất kỳ ngôn ngữ lập trình nào, chất lượng của mã bản lề dựa trên các kỹ năng của nhà phát triển viết nó.

Một lời chỉ trích phổ biến về PHP là tính linh hoạt của nó giúp các nhà phát triển thiếu kinh nghiệm viết mã xấu hoặc "spaghetti" dễ dàng. Điều này phần lớn là do nó cố gắng đồng thời nắm lấy một số mô hình đôi khi xung đột, được thực hiện kém hoặc không kết nối tốt.

  • Kịch bản phía máy chủ (PHP) được nối liền với mã phía máy khách (HTML + Javascript) mà không có tính mô đun là phổ biến, gần như được khuyến khích, gây bất lợi cho sự rõ ràng và dễ đọc.

  • Nó thường được viết theo phong cách bắt buộc, nhưng cung cấp các cơ chế để định hướng đối tượng. Điều này dễ dàng dẫn đến phong cách hỗn hợp và thường có thể dẫn đến thiết kế xấu.

  • Thiết kế hướng đối tượng (theo tôi) được hỗ trợ rất kém trong PHP4. Đây là một lĩnh vực mà PHP5 đã cải thiện đáng kể (ví dụ: với các sửa đổi truy cập, các lớp trừu tượng, độ phân giải phạm vi được cải thiện .)

  • Kiểu gõ động của PHP cho phép các lỗi thời gian chạy có thể được loại bỏ bằng kiểm tra kiểu tĩnh. Điều này vốn có với thiết kế của tất cả các phiên bản PHP và sẽ không sớm thay đổi; gánh nặng của việc xác nhận các loại đối tượng được để lại cho lập trình viên.

Các thay đổi trong mô hình OOP của PHP5 làm rất nhiều để khuyến khích thiết kế tốt tiến lên phía trước, nhưng không thêm bất kỳ sự không đồng ý nào để ngăn cản các thực tiễn xấu được đề cập ở trên.


2

PHP có một số vấn đề quan trọng trong chính nó, nhưng những vấn đề này chủ yếu thuộc về sự khó chịu: Thư viện của nó không nhất quán và hơi bị tâm thần phân liệt, nó thiếu các chuỗi như các đối tượng hạng nhất, đại loại như vậy. Nó không buộc bạn phải viết mã kém và nó hoạt động khá tốt với những gì nó làm - viết các trang web. PHP của bạn sẽ tốt như bạn cố gắng đạt được; Bạn hoàn toàn có thể viết PHP có tính thủ tục khủng khiếp và trông giống như mã C, và hoàn toàn có thể viết PHP đó là Hướng đối tượng quá mức và trông giống như Java. Là một người phát triển PHP hàng ngày, tôi thích một số thứ về nó và ghét một số thứ về nó và không thể chờ đợi một số hàm 5,4 (như Traits và sane function return dereferences), nhưng tôi hết lòng khuyến khích ai đó nghĩ về việc chọn nó lên để làm như vậy.


0

php5 là phiên bản cải tiến của php4.

Hầu hết nhưng không phải tất cả mã php4 hoạt động trong php5.

Điều thực sự thay đổi là Mô hình Đối tượng được cải tiến rất nhiều, đã khắc phục rất nhiều hạn chế và hạn chế vốn có trong triển khai OO trước đó, nhưng, phần lớn không tương thích với các phiên bản trước.

Tài liệu ở đây

Các ý kiến ​​khác có một số giá trị nhưng không phải là "không đi"

"PHP là tốt nhưng tạo mã spaghetti" - bạn có thể tạo tất cả các loại mì ống bằng bất kỳ ngôn ngữ nào, nhưng, php, không có gì để ngăn cản các lập trình viên thiếu kinh nghiệm viết một tổ chuột của mã không có cấu trúc. Ngược lại, bạn có thể viết mã đẹp bằng bất kỳ ngôn ngữ nào, các lập trình viên lành nghề không gặp vấn đề gì khi viết php có cấu trúc tốt.

"PHP là tốt nhưng Python là tài liệu kết hôn" - Đó là một ngôn ngữ tốt nhưng có một số khung web đa dạng, tất cả đều có những điểm cực kỳ tốt, nhưng, không có cái nào thực sự bị loại bỏ, tất cả đều tốt, nhưng bất kỳ Python / khuôn khổ của sự kết hợp lựa chọn của bạn sẽ luôn luôn là một kỹ năng thích hợp.

"PHP làm chậm các công cụ mà bạn có trong các ngôn ngữ khác như C # hoặc JAVA" - php có hỗ trợ thư viện đa dạng và được triển khai tốt nhất của bất kỳ ngôn ngữ nào ngoại trừ perl. Có một vài điểm trống như phân tích thống kê và xử lý véc tơ. Nhưng nhìn chung nếu bạn muốn làm một cái gì đó, một tìm kiếm nhanh của PEAR sẽ tìm thấy một thư viện thực hiện nó. Bản thân ngôn ngữ đơn giản hơn C # hoặc Java - nhưng sự đơn giản của cú pháp cơ bản cộng với "Duck Typing" có nghĩa là bạn có thể làm bất cứ điều gì trong php mà bạn có thể làm trong Java theo cách dễ đọc và dễ đọc hơn.


Câu lệnh "PHP có thư viện đa dạng và được triển khai tốt nhất ..." còn gây tranh cãi. Tôi sẽ tranh luận rằng nó quá xa hoa và tổ chức kém.
Cướp

@robjb - không nhận được bit "cồng kềnh", bạn không sử dụng những gì bạn không cần và chắc chắn càng có nhiều thư viện thì càng tốt, vì đối với tổ chức kém, PEAR và PECL khá trơn tru - không có tương đương thực sự trong thế giới C # và Java. Các thư viện không "trực giao" nhưng điều này là không thể tránh khỏi với nhiều dự án đóng góp trong nhiều năm.
James Anderson

1
Tôi không phủ nhận PHP có một số phần mở rộng / thư viện rất hữu ích, nhưng tôi không biết gì khác để gọi hàng ngàn hàm có phạm vi toàn cầu nhưng là "cồng kềnh". Ngoài ra, một số chức năng có mục đích tương tự. Đặt tên phù hợp hơn nữa hoang mang các thư viện lõi, ví dụ strip_tagsvs stripslashes. Tôi sẽ tranh luận rằng C không thể hiện những vấn đề này, nhưng nó đã tồn tại khá lâu. ;)
Cướp

Toàn bộ "bloatware" - tức là không hoạt động, php, cài đặt có thể sử dụng để xây dựng một trang web hữu ích có dung lượng khoảng 70 MB. Đây là nhỏ hơn một số tệp JAR đi kèm với JE. Hầu hết các nhà phát triển sẽ coi phạm vi toàn cầu của các hàm dựng sẵn là khá hữu ích, so với mức độ chi tiết của Java khi bạn cần "nhập" một tệp jar trước khi bạn có thể thực hiện những điều bí truyền đó như viết một dòng vào sysout. PHP không hoàn hảo nhưng đối với các ứng dụng web vừa và nhỏ thì tốt hơn bất kỳ thứ gì khác.
James Anderson

@robjb - Tôi không nhận được bình luận "C", C thể hiện các API không nhất quán, chức năng trùng lặp trong các spades. Chỉ vì các thư viện rất khó tìm và bạn chỉ sử dụng một vài bao nhiêu thư viện "chuỗi thông minh" ngoài kia?
James Anderson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.