Sử dụng phương pháp lập trình hướng đối tượng thay vì phương pháp lập trình thủ tục trong chương trình không thực sự phụ thuộc vào ngôn ngữ (có thể là PHP hay không), nhưng về loại sự cố bạn đang cố giải quyết.
(Tôi chỉ sẽ sử dụng mã giả trong các ví dụ của tôi như tôi không quá quen thuộc với PHP.)
Ví dụ, nếu bạn có một chương trình mà bạn chỉ thực hiện một loạt các chức năng theo thứ tự, thì thủ tục sẽ ổn thôi. Ví dụ, nếu đó là một chương trình chuỗi thao tác đơn giản, một cách tiếp cận thủ tục sẽ đủ:
perform_truncation(my_string, 10)
to_upper(my_string)
perform_magic(my_string, hat, rabbit)
Tuy nhiên, nếu bạn đang đi để đối phó với nhiều mặt hàng khác nhau (chẳng hạn như các file, hoặc bất kỳ đại diện khác, tốt, các đối tượng) thì cách tiếp cận hướng đối tượng sẽ tốt hơn.
Ví dụ, nếu bạn đã có một loạt các Car
s và muốn họ drive
, sau đó trong thủ tục, bạn có thể làm điều gì đó dọc theo dòng:
drive_car(first_car)
drive_car(second_car)
Trong trường hợp như, trong OOP, các Car
lon tự lái xe:
RedCar myRedCar();
BlueCar myBlueCar();
myRedCar.drive();
myBlueCar.drive();
Và vì mỗi chiếc xe là một lớp khác nhau, hành vi của chúng có thể được xác định khác nhau. Hơn nữa, chúng có thể là cả hai lớp con hoặc Car
chúng có thể có chức năng chung.
Nó thực sự đi xuống đến loại vấn đề mà làm cho một trong hai cách tiếp cận thủ tục tốt hơn so với hướng đối tượng và ngược lại.
Ngoài vấn đề về thủ tục hoặc hướng đối tượng, nó có thể là một loại "mã ngửi" để có một tệp nguồn với nhiều chức năng. Điều này cũng có thể nói về các lớp có chứa nhiều chức năng có thể được thực hiện tốt hơn như các hàm riêng biệt trong các lớp riêng biệt.
Sự cố ở đây có thể là tổ chức mã thay vì quyết định chọn lập trình thủ tục hoặc hướng đối tượng. Việc tổ chức các hàm thành các tệp nguồn riêng biệt có thể là những gì cần thiết ở đây hơn là từ bỏ phương thức thủ tục để viết chương trình.
Sau khi tất cả, có rất nhiều chương trình được viết bằng phương pháp lập trình thủ tục được viết tốt và dễ bảo trì.
Tôi đã viết một bài đăng trên blog cách đây một thời gian có thể giúp bạn hiểu sự khác biệt: [Thủ tục so với OOP Explained] (http://www.virtuosimedia.com/tutorials/procedural-vs-oop-explained) – VirtuosiMedia