2012-02-21 20 views
20

Đối với cuộc sống của tôi, tôi dường như không thể quấn đầu quanh "các lớp" trong PHP.Tôi đã viết PHP mà không có "lớp học" trong nhiều năm ... tôi đang thiếu gì?

Tôi đã quản lý để viết các trang web lớn, có thể mở rộng và phổ biến mà không cần đến chúng.

Tôi đang thiếu gì? (Và làm cách nào để tôi tìm hiểu?)

+17

oops. Bạn đang thiếu OOP – NAVEED

+1

cố gắng sử dụng các khung công tác (zend, code igniter, ect.) Theo cách này bạn sẽ tìm hiểu thêm về các lớp, MVC và nhiều hơn nữa – Bert

+12

* Nothing *. Lập trình thủ tục là một cách rất hợp lệ để viết chương trình, và nếu nó làm việc cho bạn, điều đó thật tuyệt, hãy giữ nó. Sử dụng các đối tượng thay vào đó là một cách suy nghĩ và làm việc khác, và nếu bạn muốn học, hãy chuẩn bị sẵn sàng để đầu tư một thời gian. –

Trả lời

11

Các lớp học sẽ giúp tái sử dụng mã và có khả năng là một ứng dụng rất có cấu trúc.

Lập trình thủ tục có thể nhanh hơn rất nhiều trong cả thời gian phát triển và tốc độ thực thi.

Lập trình OO là cách chủ đạo hơn nhưng không phải lúc nào cũng là cách tốt nhất. Có một cuốn sách được gọi là PHP Objects, Patterns và Practice là một bài đọc rất hay, nó bao gồm những điều căn bản về các lớp, tại sao và cách sử dụng, trừu tượng và các mẫu thiết kế chung như MVC. Nó cũng bao gồm các bài kiểm tra đơn vị và thực hành rất tốt cho các nhà phát triển php

+0

Được thăng hạng để đề xuất không phải lúc nào cũng là cách tốt nhất. –

3

Mọi người đã trả lời đúng, bạn đang thiếu rất nhiều vì giả sử bạn có trang web thư viện ảnh thay vì viết chức năng và cuối cùng bạn kết thúc bằng rất nhiều chúng

OOP sẽ là hữu ích trong việc:

  1. tổ chức Mã và bảo trì
  2. Thêm rõ ràng, và giảm độ phức tạp
  3. Nhấn mạnh dữ liệu qua qui dures
  4. Mã mô đun
  5. Mã lại khả năng sử dụng (Tin tôi đi, bạn sẽ cần có rất nhiều)
  6. Vâng phù hợp cho cơ sở dữ liệu

tôi đã không sử dụng OOP trước nhưng tôi bắt đầu và được trung thực cách đây không lâu, và thấy nó rất hữu ích ở những điểm đặc biệt trong khả năng sử dụng lại mã số

Giả sử tôi có trang web thư viện ảnh tôi sẽ tạo một lớp cho người dùng và lớp này sẽ làm CRUD trên tất cả bảng người dùng và một lớp để chụp ảnh CRUD trên tất cả các ảnh chụp

Tôi cũng có thể làm một lớp để làm tất cả CRUD cho tôi mà không chỉ định bảng và sau đó sử dụng thừa kế để mở rộng tất cả CRUD trong lớp người dùng của tôi và lớp bức ảnh của tôi

điểm ở chỗ là tôi chỉ có thể viết các phương pháp CRUD lần và sau đó tái sử dụng nó trong tất cả các lớp học khác của tôi

tôi hy vọng tôi sẽ trả lời câu hỏi của bạn

3

IMO, Nếu bạn không muốn phân biệt y html của chúng tôi & mã php; bạn tốt hơn không sử dụng các lớp học.

Bạn sẽ cần chúng trong môi trường khung (không nhất thiết) và bạn sẽ cần chúng nếu bạn muốn phản đối dữ liệu của mình, xử lý chúng như vậy.

nhưng nếu bạn đang sử dụng tốt mà không có nó, sau đó bạn chỉ là tốt :)

Khi nói đến việc xử lý một hệ thống rất phức tạp, với rất nhiều cấu trúc dữ liệu khác nhau, nhiều hơn một thành viên trong nhóm, vv Bạn và mã của bạn cần phải được tổ chức rất tốt, và bạn sẽ cần các lớp học.

9

Điểm của các lớp (lập trình hướng đối tượng) là nó kết hợp dữ liệu cùng với mã hoạt động trên đó. Nếu được thực hiện tốt, điều này dẫn đến kết hợp chặt chẽ hơn và do đó có thể duy trì được nhiều mã hơn. Trong thực tế, nó có nghĩa là ít biến toàn cầu hơn (cho dù được sử dụng trực tiếp hoặc truy cập thông qua phương pháp nhà máy tĩnh) và giảm đi xung quanh dữ liệu (tức là chữ ký phương thức nhỏ hơn).

Để biết ví dụ cụ thể, hãy xem Mysqli extension: mỗi hàm có phiên bản thủ tục và OOP và phiên bản thủ tục gần như luôn cần có tham số "liên kết" bổ sung để cung cấp ngữ cảnh, ngữ cảnh từ đối tượng hiện tại.

2

Câu hỏi hay! Bạn có upvote của tôi!

Thẳng tới điểm:
Bạn đang thiếu cả thế giới!

Có rất nhiều ẩn dụ để mô tả nó nhưng không có gì tốt hơn thực hành - bạn rõ ràng biết điều đó sau "năm" lập trình!

Quyết định một dự án nhỏ và viết phong cách OOP. Sau đó, bạn sẽ có được ý tưởng.

Thực hiện mẹo này: Đặt tên cho các lớp của bạn dưới dạng tên tệp (ví dụ: "MyClass" -> "MyClass.php"). Dễ bảo trì.

0

Bạn có thể thiếu khả năng kiểm tra: Tôi đoán các chức năng của bạn gọi các chức năng khác, do đó có thể gọi một hàm khác, đúng không? Vì vậy, bạn sẽ gặp khó khăn khi thử nghiệm một hàm bị cô lập. Với OOP bạn lắp ráp "đống" của các đối tượng và có thể trao đổi từng đối tượng với một "giả" một (được gọi là giả hoặc sơ khai) cho một thử nghiệm. Bằng cách này, bạn có thể kiểm tra từng chức năng một cách riêng biệt. Hãy nghĩ đến việc có thể kiểm tra mã đầu ra của bạn mà không cần một cơ sở dữ liệu. Hãy thử kiểm tra mã điều khiển của bạn (mã xử lý các tham số yêu cầu và quyết định hành động nào cần thực hiện) mà không cần máy chủ web.

+0

Câu trả lời này hoàn toàn sai. Nó làm cho giả định rằng các hàm viết sẽ gọi các hàm khác. Đối số cho mocks hoặc stubs áp dụng nhiều cho đầu vào của các hàm như nó thực hiện các phương thức trong một lớp. Trong thực tế, một phong cách mã hóa thủ tục gần gũi hơn với một phong cách lập trình hàm mà ở đó nó không phải là một bước để viết các hàm thuần túy, nó có thể kiểm tra được nhiều hơn. –

Các vấn đề liên quan