2008-11-25 51 views
5

Đối với dự án trường học của chúng tôi, chúng tôi có nhiệm vụ xác định tài liệu thiết kế mô tả kiến ​​trúc của một ứng dụng PHP.Thiết kế hướng đối tượng cho ứng dụng PHP

Chúng tôi tự do quyết định nội dung cần đưa vào tài liệu.

Giáo sư của chúng tôi đề xuất, rất nhiều sơ đồ (UML).

Ông cũng yêu cầu chúng tôi xem xét sơ đồ lớp, nhưng cẩn thận, vì PHP không hoàn toàn hướng đối tượng.

Câu hỏi của tôi: Thiết kế hướng đối tượng miền có thiết kế khả thi cho ứng dụng PHP không? Điều gì cần xem xét khi thực hiện OO trong PHP? Những ưu và khuyết điểm là gì? Bất kỳ tài nguyên hữu ích nào trên OO trong PHP và các phương pháp hay nhất về PHP?

Trả lời

9

IMHO thật khó để mô tả kiến ​​trúc của bất kỳ ứng dụng nào mà không biết ứng dụng được yêu cầu làm gì. Tất cả các ứng dụng (PHP hoặc cách khác) của bất kỳ phức tạp trông khác nhau.

Thứ hai, PHP5 cung cấp cho bạn các lớp/đối tượng và rất nhiều thông thường của OO gubbings - vì vậy để mô tả nó là 'không hoàn toàn đối tượng định hướng' là gây hiểu nhầm tôi nghĩ. Nếu bạn có nghĩa là bạn có thể có một cách tiếp cận thủ tục với ra bị hạn chế đối tượng thì có, nhưng nếu bạn muốn tất cả mọi thứ là một đối tượng thì đó là sự lựa chọn của bạn.

DDD có khả thi cho PHP không? Phải, tất nhiên. Một cách tiếp cận cụ thể đối với kiến ​​trúc thường không phụ thuộc vào công nghệ. Thực hành tốt nhất, ưu điểm/khuyết điểm của thiết kế OO áp dụng cho hầu hết các ngôn ngữ - PHP giúp bạn khá tự do để quyết định cách cấu trúc mã của bạn.

Bạn có thể tìm thấy điều này Best Practices nói chuyện từ trang web PHP có ích;)

2

PHP ngày nay có thể được mô tả như hoàn toàn hướng đối tượng bằng cách lựa chọn. Nó cung cấp mọi thứ bạn cần nhưng bạn không bị buộc phải viết mã OO.

Có hai cuốn sách đó đã giúp tôi rất nhiều trong việc tìm hiểu các nguyên tắc OO liên quan đến PHP:

  • PHP trong hành động (Manning)
  • Zend Study Guide cho PHP5 (Zend)
2

Hầu hết các ngôn ngữ OO hiện đang được sử dụng không phải là hoàn toàn hướng đối tượng. Mọi ngôn ngữ đều có tính đồng nhất và gotchas. Vì vậy, tôi muốn nói PHP là OO đủ cho hầu hết các dự án đơn giản. Tôi đã làm việc trên khung công tác Zend được thiết kế như một thư viện lớp OO, với các mẫu thiết kế và như vậy.

Một gợi ý cho PHP là bạn nên chú ý đến thành phần SPL, cung cấp cho bạn giao diện cho nhiều lớp cơ bản.

Tôi nghĩ rằng nó khá yếu nếu giáo viên của bạn nói, "đặt bất cứ điều gì bạn muốn vào tài liệu thiết kế, sơ đồ UML là khá." Tài liệu thiết kế là một phần quan trọng nhưng bị đánh giá thấp về kỹ thuật phần mềm. Giáo viên của bạn sẽ hiển thị cho bạn các ví dụ hoặc mẫu cho tài liệu thiết kế tốt.

0

OO là phương pháp thiết kế đầu tiên và quan trọng nhất.

Vì vậy, có thể có được thiết kế OO có thể được lồng ghép trong ngôn ngữ thủ tục. Tôi đã thấy điều này được thực hiện cho cả hai dự án C và COBOL. Và nó đã thuyết phục tôi rằng gần như tất cả những lợi thế của OO là làm với thiết kế và KHÔNG cấy ghép ngôn ngữ. Vì vậy, có bạn có thể đưa ra một thiết kế OO với rất nhiều UML (sơ đồ lớp, trường hợp sử dụng, làn đường bơi vv) và bạn có thể thực hiện nó trong php (sử dụng các lớp hay không).

Dù sao php có hiệu quả là một phần lớn của OO vì vậy nếu bạn giới hạn mình vào các lớp và chức năng bên trong lớp học (== phương pháp) bạn có triển khai OO.

Điều duy nhất thiếu sẽ là định nghĩa giao diện nhưng nó làm cho rất ít ý nghĩa để xác định giao diện bằng ngôn ngữ với kiểm tra loại giới hạn (un) đó.

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