Khi nào tôi cần sử dụng khung? [đóng cửa]


15

Tôi chưa quen với lập trình web và tại thời điểm này tôi đang tìm hiểu về PHP. Tôi muốn biết khi nào tôi cần sử dụng một khung công tác PHP như CakePHP? Những thứ mà khung công tác PHP tương tự này cung cấp cho tôi là gì? Và nó có thực sự quan trọng để sử dụng một khuôn khổ để trở thành một chuyên gia?

  • Và tôi có thể tạo khung riêng của mình để cung cấp các tính năng tôi thích vào không?

3
Khi bạn hiểu những gì nó cung cấp và có thể hoạt động xung quanh nó khi cần, hãy sử dụng khung [xyz]. Khung là các công cụ dành cho những người có kỹ năng, những người biết cách sử dụng chúng và hiểu những hạn chế của lựa chọn của họ. Đừng, trong mọi trường hợp, hãy học một ngôn ngữ bằng cách học một khung. Điều đó giống như cố tình tắt ngón chân của bạn, hoặc tầm nhìn ngoại vi. Gợi ý, các phiên hoạt động kỳ lạ tùy thuộc vào khung PHP nào bạn sử dụng .. hãy cẩn thận :)
Tim Post

Câu trả lời:


10

Khi bạn thấy thoải mái với PHP, bạn có thể bắt đầu sử dụng một khung công tác. Và bạn nên luôn luôn sử dụng chúng:

  1. Nó nhanh hơn nhiều so với việc mã hóa lại mọi thứ
  2. Nó giúp sửa đổi dễ dàng hơn, như thay đổi cơ sở dữ liệu hoặc thay đổi quan điểm
  3. Làm việc với những người khác cũng sẽ dễ dàng hơn, vì họ thường được sử dụng cho các khung công tác mô hình MVC sử dụng

Bạn có thể tạo khung riêng của mình, nhưng tôi chắc chắn sẽ không giới thiệu nó. Điều đó thật phức tạp, hiện đã có rất nhiều khung công tác tốt và không có khả năng bạn sẽ tìm thấy một tính năng bị thiếu. Bên cạnh đó, họ thường cung cấp các cách để thêm các tính năng của riêng bạn cho họ mà không phải tạo một tính năng hoàn toàn mới.


2
+1 cho Khi bạn thấy thoải mái với PHP, bạn có thể bắt đầu sử dụng khung. Điểm 3 của bạn chỉ hoạt động tốt nếu các khung rất giống nhau. Tôi đã thêm "không tạo khung trước khi sử dụng nhiều khung khác nhau"
peterchen

7
Tôi hoàn toàn không đồng ý với tuyên bố "bạn nên luôn luôn sử dụng chúng". Chúng không phù hợp với mọi dự án và thường khiến việc sửa đổi trở nên khó khăn hơn . Các tiện ích có giá trị hơn nhiều so với các khung.
Nicole

+1 cho @NickC, tôi không thể đồng ý nhiều hơn. Một số khung công bố là năng động và dễ dàng thay đổi mọi thứ xung quanh, nhưng sau đó bạn đến một điểm nhất định và bạn chỉ ... không thể. Tôi đã từng nói rất nhiều về điều đó :)
Steve Hill

Tôi đồng ý rằng MVC là một điểm chung rất tốt cho phép người khác bước vào mã của bạn với ít đường cong học tập hơn khi được sử dụng đúng cách. Nhưng MVC là ngôi sao sáng ở đó, khuôn khổ (hoặc thiếu nó) chỉ là việc thực hiện.
Tim Post

Tất cả những điều này là một lý thuyết và không hoạt động trong thực tế. Các khung công tác PHP có nhiều khả năng làm cho tất cả những điều đó trở nên khó khăn hơn. Ứng dụng trung bình được viết bằng đầu cần khoảng năm trăm đến năm nghìn dòng mã khung. Đó là khoảng một tuần làm việc trung bình. Nếu nhiều hơn thế thì có lẽ bạn đang viết thư viện hoặc bạn đang tạo một nền tảng bên trong.
jgmjgm

9

Xây dựng một vài trang mà không có khung ... về cơ bản bạn sẽ bắt đầu viết khung của riêng mình bằng cách dùng thử và lỗi. Sau khi bạn làm điều đó, di chuyển đến một khung và tận hưởng bao nhiêu thời gian bạn tiết kiệm. Cố gắng xây dựng khung làm việc của riêng bạn có thể dạy cho bạn một số điều và sẽ giúp bạn đánh giá cao các khung đã có sẵn.

Khi tôi lần đầu tiên vào PHP, tôi nghĩ các khung công tác là một sự lãng phí thời gian phức tạp. Bây giờ, tôi sử dụng CodeIgniter cho các dự án đơn giản. Mất khoảng 1 phút để khởi động và chạy, bạn đã có sẵn rất nhiều thư viện tuyệt vời cho bạn. Và, như một poster trước đã đề cập, hầu hết các khung đều có thể mở rộng, vì vậy bạn luôn có thể thêm bất kỳ chức năng nào bạn muốn.


2
Nhưng làm thế nào tôi có thể chắc chắn sau này rằng mã trong khung là chính xác như tôi muốn? Ý tôi là mỗi lập trình viên đều có phong cách riêng, phải không? Thế còn khuôn khổ !!
Goma

1
@Goma Còn ngôn ngữ thì sao? Tôi chưa tìm thấy ai làm mọi thứ theo cách tôi muốn. Khung này chỉ thêm một cái gì đó rất, rất giống nhau (hy vọng ở mức độ trừu tượng cao hơn một chút). Nghiêm túc mà nói, tiền mã hóa không phải là về việc khiến mọi thứ trông / hành xử / chính xác như tôi muốn. Đây là về việc tạo ra thứ gì đó hữu ích, mã chỉ là trách nhiệm mà chúng ta tự gánh chịu vì lợi ích vượt xa chi phí khi có mã đó trong địa điểm đầu tiên.
Christopher Creutzig

Và bây giờ @TaylorOtwell là người tạo ra Laravel ...
Hos Mercury

4

Giống như Niphra đã nói, chỉ bắt đầu sử dụng một khung công tác khi bạn có thể sử dụng PHP mà không cần khung (nghĩa là truy cập cơ sở dữ liệu, gửi tiêu đề và nội dung, xử lý chuỗi, thao tác dữ liệu, v.v.). Theo như câu hỏi của bạn:

  • Khi nào tôi cần sử dụng khung PHP như CakePHP? Khi dự án của bạn phát triển vượt quá một vài tệp PHP; thời điểm bạn bắt đầu phân tách mạnh mẽ logic thành các yếu tố riêng biệt và chức năng mô đun hóa / chia sẻ (phiên, v.v.) là khi bạn nên sử dụng khung.

  • Những thứ mà khung công tác PHP tương tự này cung cấp cho tôi là gì? Trừu tượng; thay vì tương tác trực tiếp với cơ sở dữ liệu, bạn có thể sử dụng Ánh xạ quan hệ đối tượng (ORM) để quản lý cấu trúc và mối quan hệ giữa dữ liệu của bạn trong cơ sở dữ liệu. Hầu hết khung trong nhiều ngôn ngữ cung cấp ORM để giúp tương tác dễ dàng hơn với lớp cơ sở dữ liệu của ứng dụng của bạn. Tương tự, các khung thường tách các lớp đáp ứng với tương tác của người dùng. Sự tách biệt phổ biến nhất là mô hình Trình điều khiển Chế độ xem Mô hình (MVC), nói ngắn gọn, tóm tắt logic cơ sở dữ liệu vào Mô hình (trong nhiều trường hợp, giao diện với ORM, trong nhiều trường hợp), xử lý các yêu cầu và tương tác với Mô hình vào Trình điều khiển và kết xuất HTML / PDF / hình ảnh / thực tế. vào Chế độ xem. Các khung thường cung cấp các công cụ khác như định tuyến (để cho phép xử lý phức tạp URI yêu cầu (EG: Ánh xạ yêu cầu "http://example.com/users/1 "cho người dùng bộ điều khiển, sau đó tra cứu Mô hình người dùng với ID là 1) và sự trừu tượng hóa các phiên và các cấu trúc cơ bản khác.

  • Và nó có thực sự quan trọng để sử dụng một khuôn khổ để trở thành một chuyên gia? Không cần thiết; khuôn khổ làm cho cuộc sống dễ dàng hơn; nhưng bạn không phải sử dụng một để trở thành một chuyên gia. Các khung cung cấp sự trừu tượng hóa và tiêu chuẩn hóa tiện dụng, nhưng chúng không phải là một yêu cầu trong hầu hết các trường hợp.


3

Sau khi đọc một số câu trả lời, trước tiên tôi muốn nói rằng bạn thường không có nhiều lựa chọn về việc bạn sẽ sử dụng khuôn khổ nào hoặc bạn sẽ sử dụng một hay không (như một chuyên gia). Tôi không muốn đe dọa bạn, nhưng bạn sẽ cần xây dựng đủ sự hiểu biết về PHP để cho phép chuyển từ khung này sang khung khác cũng như sử dụng nhiều hơn một khung cùng một lúc.

Khi nào tôi cần sử dụng khung PHP như CakePHP?

Không có câu trả lời chung cho vấn đề này. Là một chuyên gia, bạn sẽ được giao nhiệm vụ giải quyết các vấn đề cụ thể và đây sẽ là yếu tố quyết định thời điểm và thời điểm của từng dự án, đặc biệt nếu khách hàng có nhu cầu cụ thể. Nhưng nói chung, bạn sẽ luôn sử dụng một số dạng khung công tác với PHP, trừ khi bạn sửa đổi hoặc mở rộng một ứng dụng có sẵn có khung riêng (như Wordpress hoặc PHPBB).

Những thứ mà khung công tác PHP tương tự này cung cấp cho tôi là gì?

Như đã nói bởi dirk, họ cung cấp sự trừu tượng. Điều này có nghĩa là họ thực hiện các quy trình phổ biến, gồm nhiều bước và cố gắng làm cho chúng đơn giản và hợp lý nhất có thể. Nói tóm lại, họ cố gắng trình bày các giải pháp chỉ cần thêm nước cho các nhiệm vụ chung.

Và nó có thực sự quan trọng để sử dụng một khuôn khổ để trở thành một chuyên gia?

Nói chung, không quan trọng là sử dụng một khuôn khổ để trở thành một chuyên gia. Nhưng thực tế, bạn sẽ không có nhiều sự nghiệp nếu bạn không quen thuộc với ít nhất một vài khuôn khổ chung. PHP không có khung giống như C ++ mà không có thư viện tiêu chuẩn. Bạn không cần nó, và bạn thực sự có thể làm nhiều hơn mà không cần nó vì bạn sẽ trực tiếp sử dụng chức năng chặn khối thấp hơn của ngôn ngữ, nhưng bạn sẽ mất nhiều thời gian hơn để làm điều tương tự.

Và tôi có thể tạo khung riêng của mình để cung cấp các tính năng tôi thích vào không?

Đúng. Trong thực tế, bạn có thể sẽ làm như vậy ngay cả khi vô ý. Bằng cách này, tôi không có nghĩa là một khung làm tất cả mở rộng, mà giống như một túi công cụ gồm các hàm và tập lệnh cơ bản thực hiện các tác vụ không phổ biến hoặc chung chung để được xử lý bởi khung trung bình. Mine về cơ bản được tạo thành từ nhiều hệ thống tệp khác nhau, xử lý quy trình và rex-ex tid-bits với một vài tiện ích cuộn và luồng / ổ cắm khác nhau.


1

Phổ biến từ một người đã dành nhiều năm để hack các cách riêng của tôi để nói chuyện với cơ sở dữ liệu và nói chuyện với API trực tuyến và bây giờ mới bắt đầu sử dụng các khung công tác, hãy sử dụng chúng khi bạn ít nhất hiểu được những gì họ làm, nếu có thể.

Đừng ngay lập tức nhảy vào RedBean trong lần đầu tiên làm việc với cơ sở dữ liệu, trước tiên hãy làm việc với DB. Bằng cách này, bạn có một sự hiểu biết thấu đáo về những gì bạn thực sự tìm nạp và làm với DB, điều này thực sự có thể giúp với khả năng mở rộng. Sau đó, bạn cũng có thể đưa ra giải pháp của riêng mình khi khung mà bạn sử dụng không làm điều gì đó bạn cần làm.

Một khi bạn hiểu những gì đang xảy ra, hãy sử dụng một khung! Nó làm cho mọi thứ dễ dàng hơn nhiều. Sự điên rồ với việc lưu trữ một truy vấn sau đó lặp lại kết quả với mysql_fetch_assoctất cả đã biến mất, giảm xuống còn một cuộc gọi : $book = R::load( "book", $id ). Bạn sẽ làm việc hiệu quả hơn và có thể sửa các lỗi trong tương lai hoặc thêm các tính năng trong tương lai dễ dàng hơn nhiều.


1

Sử dụng khung khi bạn biết rõ các công nghệ cơ bản đủ để biết khung đó làm gì cho bạn và tại sao điều đó tốt (hoặc xấu).

Khung là một loại công cụ meta, cho phép bạn làm việc với các công cụ (ngôn ngữ, cơ sở dữ liệu) nhanh hơn một chút mà không phải lo lắng về một số chi tiết về những gì bạn đang làm, thật tốt nếu bạn thực sự biết công cụ.

Điều bạn không muốn xảy ra là bạn học khung thay vì các công cụ và trở thành một cách làm việc nhất định, và cuối cùng không thực sự nắm vững các ngôn ngữ và khái niệm cơ bản - nó nên là một công cụ, không phải là một cái nạng.


1

Khi bạn thấy mình làm điều tương tự lặp đi lặp lại, hãy nhìn xung quanh và xem liệu có một khuôn khổ nào thực hiện cùng một thứ dư thừa mà bạn sẽ tự mình làm. Đừng chỉ sử dụng một khuôn khổ vì sự cường điệu. Cá nhân tôi thích "khung công tác PHP MVC không khung của CodeIgniter và Rasmus Lerdorf" http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html


Tôi đã viết một số 'không có khung khung' để giảm bớt nỗi đau khi thêm các tính năng mới vào các trang web tĩnh (và khổng lồ) mà không thể dễ dàng chuyển sang bất kỳ loại hệ thống quản lý / xuất bản nào, vì vậy chúng có công dụng của chúng. Nhưng tôi sẽ không tự mình thực hiện một dự án hoàn toàn mới (tôi chỉ sử dụng CI nếu một khuôn khổ được yêu cầu).
Tim Post

@Tim Bài viết Thông thường không bao giờ có câu trả lời trắng đen cho câu hỏi này. Tất cả phụ thuộc vào dự án trong tay, bài viết gốc không cung cấp chi tiết về một dự án cụ thể.
lập trình viên

1
Có vẻ như tôi đã bỏ phiếu từ một khuôn khổ nhiệt tình, tốt đẹp!
lập trình viên

Không phải tôi :) Ai đó có thể đã phản ứng với liên kết bạn đã đăng mà không thực sự đi sâu vào chi tiết về nó.
Tim Post

@Tim Đăng Heh! Đó là lý do tại sao tôi đảm bảo tách cả hai ý kiến ​​này. : D
lập trình viên

-1

Tôi khuyên bạn nên suy nghĩ cẩn thận tại sao bạn sẽ sử dụng framework x, y hoặc z. Mọi khung công tác không chỉ cung cấp chức năng mà bạn không phải tự thực hiện mà còn là cách suy nghĩ. Chỉ cần nhìn vào Spring, JEE, Rails hoặc Django. Bốn khung cung cấp đủ để dậm chân một ứng dụng web trong một thời gian ngắn.

Nhưng cả bốn đều thúc đẩy cách suy nghĩ của riêng họ về cách xây dựng các ứng dụng web. Nếu điều đó không phù hợp với nhu cầu của bạn hoặc phù hợp với sở thích của bạn, bạn sẽ khó có thể đưa mọi thứ đi xa hơn.

Đây là một so sánh rất triệt để nhưng có lẽ việc xây dựng một thư viện nhỏ phù hợp với nhu cầu của bạn hơn. Nhưng việc biết các khung chắc chắn sẽ giúp bạn làm việc trong các nhóm lớn hơn hoặc tìm kiếm công việc mới, vì điều đó cho thấy rằng bạn quan tâm đến việc phát triển phần mềm nói chung.


-2

Các khung luôn luôn tốt để sử dụng ngay từ đầu. Nó thúc đẩy mã tái sử dụng, khả năng đọc tốt hơn và tiết kiệm một chút thời gian phát triển.

Tôi không có nhiều kinh nghiệm với PHP, nhưng tôi sẽ khuyến khích bất kỳ việc sử dụng khung nào.


Tại sao các phiếu giảm?
Pierre Pretorius
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.