bạn Neexare đã hiểu sai giửa overriding & overloading
override là giống như bạn nói : viết 1 method trùng tên với method của lớp cha, để thay thế method của lớp cha.
còn về phần overload :
php định nghĩa khác với các ngôn ngữ khác . cho nên ví dụ của bạn thanhsangvnm đưa ra là sai. vì php không cho đặt trùng tên hàm trong cùng 1 lớp.
ví dụ của bạn chỉ đúng trong ngôn ngữ cho phép overloading .. ví dụ java , c#. khi đó overloading sẽ được hiểu là cùng 1 tên hàm, nhưng các params đưa vào khác nhau , khi đó nó sẽ sử dụng hàm theo params đó.
còn trong php. overloading nghĩa là
http://php.net/manual/en/language.oop5.overloading.php.. dịch đại khái : là để tạo ra properties hoặc methods thông qua magic methods.
Hoàn toàn đồng ý với ý kiến của bạn.
Cũng cần nói thêm tí nữa rằng việc không cho đặt tên hàm trùng theo kinh nghiệm của tôi biết thì không phân biệt nó la public hay gì khác, kể cả có static hay không v.v... và không phân biệt hoa thường luôn.
Nhưng nếu bạn muốn viết vậy thì dùng magic function để làm cũng okay, tất nhiên nếu bạn code bằng IDE như Netbean thì có thể hơi rắc rối một tí vì bạn dùng auto-complete sẽ không được. Nhưng đâu cần đúng hem?

Chúc vui.