Phần này thì mỗi framework, mỗi CMS có câu trả lời khác nhau, nên không thể nói chung chung được. Topic của bạn là PHP nên mình chỉ nêu 1 CMS là WordPress và 1 web framework phân chia dạng module là Zend Framework. Kiến thức 2 phần thì mình không có nhiều lắm.
Phía WordPress thì khi sau khi đổi các info về database và auth trong wp_config.php
, đăng nhập vào /wp_admin
thì tự động website tạo database sẵn cho mình, mỗi WordPress website đều có database giống nhau. Ngoài ra WordPress cũng cung cấp sẵn code truy vấn database và hiển thị theo blog cho mình. Việc chỉnh sửa source code trực tiếp thường không khuyến khích. Vì vậy, ngoài chỉnh sửa theme, dev thường sử dụng ActionHook hay FilterHook để thay đổi các thực thi một số function có sẵn của CMS.
Bên Zend Framework, như các PHP framework khác, thì không có tự tạo database schema, mà dev tạo trước. Sau đó dev viết code + test case. Sau này có bug chỗ nào chỉ sửa chỗ đó thôi. Ý cá nhân mình thì thấy Zend phân chia module và class chi tiết, rõ hơn các framework khác của PHP: Entity, TableGateway, Query, Form, View Helper, Partial View, Layout,… Route cũng có nhiều cách sửa route, từ literal, dynamic route, regular expression, đến custom function có hết. Nếu có 1 bug nào đó xảy ra thì mình nghĩ cũng chẳng cần hook làm gì.
Còn nếu bạn dùng micro framework như Slim chẳng hạn, thì chỉ cần phân tích business domain kĩ vào, chia thành nhiều module và class tách biệt ra.