Là các khung cần thiết trong PHP? [đóng cửa]


9

Các khung công tác có thực sự cần thiết trong PHP không?

Những lợi thế và bất lợi của việc sử dụng một là gì?


2
Gần đây chạy trên bài SO này mà vẻ bề ngoài khá sâu sắc về việc sử dụng PHP mà không có một khuôn khổ stackoverflow.com/questions/3655145/...
Matt Molnar

Câu trả lời:


17

Không. Nhưng họ tốt.

Ưu điểm : Tiết kiệm thời gian không phải tự xây dựng lại mã. Sử dụng vô số các tính năng, chức năng và cấu trúc dữ liệu mà người khác xây dựng áp dụng cho dự án của bạn.

Nhược điểm : Không tự mình xây dựng mã có thể là một mất mát ở mức độ hiểu biết tốt hơn trên nền tảng mà dự án của bạn hoạt động.


1
nhưng vấn đề là ngày này có rất nhiều khung công tác tôi không biết nên sử dụng cái nào
Tayyab Gulsher Vohra

4
@Tayyab Bạn phải sử dụng `em all!
Arnis Lapsa

1
Chọn một khung là để bạn quyết định, dựa trên nhu cầu của ứng dụng và phong cách mã hóa của bạn. Cũng tự hỏi mình, bạn có cần một khung để cuộn ứng dụng của riêng bạn, hoặc một CMS (Joomla, Drupal, v.v.) không?
Darren Newton

2
Bạn phải cẩn thận về "những ẩn số chưa biết". Nếu bạn không sử dụng khung, nguy cơ quên hoặc không biết về một số nội dung mà khung giải quyết cho bạn là rất lớn. Ví dụ, bạn có đang xử lý chính xác việc ngăn chặn tấn công CSRF không? Ứng dụng của bạn sẽ hoạt động mà không có sự ngăn chặn như vậy, nhưng nó sẽ dễ dàng bị hack. Chọn một khung chính (bất kỳ trong số chúng) có nghĩa là bạn được hưởng lợi từ tất cả những thứ mà các ứng dụng web phải quan tâm, ngay cả khi bạn chưa tìm hiểu về nó.
Joeri Sebrechts

9

Các khung ứng dụng web chỉ tốt như trải nghiệm của bạn với chúng.

Mọi khung công tác đều có một đường cong học tập, cho đến khi bạn vượt qua đường cong đó, có thể bạn sẽ kết thúc mọi việc để khẳng định ngược lại rằng bạn phủ nhận tất cả các lợi ích của việc sử dụng khung. Ứng dụng của bạn sẽ chậm phát triển, mã sẽ khó theo dõi và toàn bộ sự việc sẽ bị phá vỡ khi một phiên bản mới của khung được phát hành. Tôi sẽ khuyên bạn không nên cố gắng sử dụng một khung công tác xa lạ (hoặc bất kỳ công nghệ xa lạ nào) cho các dự án có thời hạn chặt chẽ.

Làm thế nào để một người có được tốt hơn trong việc sử dụng các khung?

Bạn sẽ phải xây dựng một số ít các ứng dụng khủng khiếp và lặp đi lặp lại. Cuối cùng, bạn sẽ tìm ra các yêu cầu và sử dụng khung sẽ cho phép bạn rút ngắn thời gian phát triển và mã được tổ chức tốt hơn.

Bạn có nên sử dụng một khung công tác PHP?

Tất cả những người viết mã đủ PHP cuối cùng đều sử dụng một khung công tác. Câu hỏi là, bạn sẽ sử dụng khuôn khổ của riêng bạn hay do một bên thứ ba phát triển? Theo kinh nghiệm của tôi, bạn có thể sẽ không bao giờ phát triển khuôn khổ của riêng mình, điều này sẽ phù hợp với sự mạnh mẽ và chất lượng của khung bên thứ ba. Điều đó nói rằng, phát triển khung công tác của riêng bạn dường như là một quyền trong cộng đồng PHP, vì vậy, đừng để tôi ngăn cản bạn viết lớp trừu tượng cơ sở dữ liệu của riêng bạn.

Đây là một biểu đồ hữu ích:

nhập mô tả hình ảnh ở đây


7

Theo Rasmus Lerdorf , bạn không cần bất kỳ khung bổ sung nào, vì bản thân PHP là một khung. http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html


tôi cũng là một kẻ biginner và tôi đang cố gắng để viết mã i am mới để nó và tôi muốn trở thành một nhà phát triển cốt lõi của php để vừa lòng chàng trai gợi ý cho tôi
Tayyab Gulsher Vohra

3
Bài báo đó là từ năm 2006, và đã lỗi thời.
Jonathan Rich

1
@JonathanRich: bài viết đó thậm chí có thể đã lỗi thời, nhưng nó vẫn rất thú vị!

4

Vâng, nó thực sự phụ thuộc vào quy mô của dự án của bạn. Một trang chủ không có cơ sở dữ liệu và không quá 10 trang, một khung sẽ quá nhiều, chủ yếu là vì các framewroks luôn cần rất nhiều cấu hình và tùy chỉnh trong hầu hết các trường hợp, để phù hợp với nhu cầu cụ thể. Và trong một số trường hợp, chúng có thể chậm hơn một chút so với một số trang có trong một tệp (nghĩ về tất cả các khung cần tải để sử dụng các tính năng của nó.).

Bây giờ, nếu bạn đang lập kế hoạch cho một trang web có kích thước trung bình / lớn, với các tương tác cơ sở dữ liệu, dịch vụ web, v.v., bạn sẽ cần một khung để giúp bạn tương tác với các công nghệ khác nhau và sắp xếp mã của bạn theo cách mà khi mọi thứ bị hỏng, bạn sẽ có các habilitie để nhanh chóng phát hiện và sửa chữa nó. Ngoài ra nếu bạn nghĩ về khách hàng, họ luôn thay đổi suy nghĩ về phần mềm, vì vậy nếu khách hàng cần sửa đổi hoặc thêm một tính năng mới, bạn không cần phải tìm hiểu tất cả mã của mình và suy nghĩ về cách tôi cắm tính năng mới này vào tất cả Sphagetti này.

Có rất nhiều ưu và nhược điểm khác, nhưng đây là những điều đầu tiên tôi nghĩ đến.

Chỉnh sửa: Tôi sử dụng khung symfony trong các cơ sở hàng ngày và cũng đã làm việc với php cho trường đại học (tôi có một số khóa học về phát triển web không được phép sử dụng bất kỳ khung nào), vì vậy hầu hết điều này xuất phát từ trải nghiệm đó.


1
Vâng, tôi là người mới bắt đầu sử dụng php và chưa phát triển bất kỳ điều gì lớn và tôi bối rối không biết nên sử dụng cái gì và tôi nên sử dụng cái gì thực sự hoàn toàn trống rỗng
Tayyab Gulsher Vohra

Bước đầu tiên sẽ không sử dụng chúng, tìm hiểu các công nghệ và cách chúng hoạt động (php, framework, js, css, v.v.), sau đó khi bạn đã hiểu cơ sở của lập trình php, sau đó sử dụng một khung như Zend hoặc Symfony hoặc CakePHP để tìm hiểu làm cách nào để tăng ứng dụng của bạn
guiman

2

Bạn đang đùa, phải không?

Sự cần thiết phụ thuộc vào việc sử dụng. Máy tính không cần thiết cho nhân loại, cả ô tô, v.v.

Đối với ưu điểm / nhược điểm, đối với mỗi sở hữu!

Tôi muốn hiển thị một số mã ví dụ ra khỏi khuôn khổ của riêng tôi:

class Product extends DatabaseRow {
    public $name='';
    public $price=0.0;
    public $images=array();
    public $description='';
    public table(){
        return 'products';
    }
}

$p=new Product();
$p->name='Bread';
$p->price=0.5;
$p->images=array('loaf1.jpg','bakery.jpg');
$p->description='Our premium diet bread.';
$p->save();

Xem những gì tôi đã làm ở đó? Lớp học đó phục vụ như là một mô hình cho một cửa hàng. Có gì đặc biệt ngoài OO? Nếu bảng hoặc bất kỳ cột nào không tồn tại, nó sẽ được tạo động. 0 tập lệnh cài đặt. Tất nhiên, đây là một tính năng cụ thể trong khuôn khổ của tôi. Nhưng bạn hiểu ý rồi đấy.


Tôi muốn nói với bạn một số điều thực sự tôi đang sử dụng 2 khung công tác là codeigniter và cái còn lại là yii và tôi muốn trở thành một nhà phát triển cốt lõi nhưng các khái niệm OOP của tôi không thực sự tốt như vậy.
Tayyab Gulsher Vohra

Làm thế nào để bạn phân biệt giữa câu lệnh 'CẬP NHẬT' và 'CHERTN' trong phương thức $ p-> save ()?
Srisa

@Srisa - Tôi chưa đặt ID. Để làm một UPDATE, tôi cần: $p=new Product($the_id); $p->load();Các load()là đến một hàng hợp nhất chứ không phải ghi đè lên toàn bộ hàng.
Christian

2

Không phải tất cả các ứng dụng yêu cầu một khung, nhưng hầu hết các ứng dụng đều có.

Những ưu điểm là:

  • Đừng lặp lại chính mình - Bất kỳ ứng dụng mới nào cũng sẽ có chức năng chung với nhiều ứng dụng hiện có. Nó có ý nghĩa để tránh lặp lại chính mình. Một chức năng gói khung bạn sẽ cần cho hầu hết các ứng dụng. Do đó, bạn sẽ tiết kiệm thời gian (và tiền bạc).
  • Đừng tự làm khổ mình - Phát triển phần mềm nói chung có thể khá đau đớn. Nó có ý nghĩa để tự động hóa các công cụ trần tục. Một khung chăm sóc hệ thống ống nước, vì vậy bạn có thể tập trung vào việc sáng tạo sâu sắc. Do đó, bạn sẽ tiết kiệm công sức (và tiền bạc).

Những nhược điểm là:

  • Cách của chúng tôi hoặc không có cách nào - Bạn có thể phải tuân theo các quy ước cứng nhắc của khung, điều này có thể trái với niềm tin giáo điều của bạn về cách mọi thứ nên được thực hiện (và do đó khiến bạn tức giận).
  • Hội chứng khung mắc phải - Bạn có thể trở nên quá phụ thuộc vào các khung để có được những điều đơn giản nhất được thực hiện. Bạn sẽ quên cách định tuyến các yêu cầu, truy cập cơ sở dữ liệu, ánh xạ đối tượng đến các truy vấn cơ sở dữ liệu, v.v. vì khung công tác nắm giữ tất cả điều đó.

Tất cả trong tất cả, tốt hơn là sử dụng một.

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.