Class bir nesnedir. Örneğin bir üyeye nesne gözüyle bakar. Bir habere nesne gözüyle bakar ve her class ın kendi metotları vardır. Bu metotlar o nesneye herşeyiyle hitap eder hakimdir. Genişletebilir daraltabilir veya o sınıf üzerine yeni bir nesne inşa edebilirsiniz.
Fonksiyonlar class kadar esnek değildir. Örneğin bir class da bir değişkene erişmek için $this operatörü ile erişim yaplabilirken fonksiyonlarda global ile çağırmanız gerekmektedir ki bu yüzden metotlar ( anlayacağınız tabirle fonksiyonlar ) arası ilişki classlarda daha basittir.
Örneğin bir arsa classı yazdınız. Daha sonra üstüne ev inşa eden yeni metotlar eklediniz kapı pencere asansör kat vs. Bunları kolay ve çabuk eklersiniz ama fonksiyonlarda bu iş böyle kolay yürümez.
Onun dışında hep deriz classları öğren öğren diye ama classları öğrenmekte tek başına yeterli değildir. Proje geliştirirken classlarıda tasarlamalısınız ki sonradan başınıza iş açılmasın ve kolay oynama yapabilesiniz.
Bunun için tasarım şablonları çıkmıştır ( design pattern ). Dolayısıyla tek başına class yazmakta aslında pek önemli değildir. İş MVC mimarisine dönmelidir ki burda da Controller Model ve View kodlarınız birbirinden ayrılmalıdır. Böylece projeye çok daha rahat hakim olabilirsiniz.
Başka bir güzelliği ise projenize sonradan katılanlar daha kolay adapte olacaktır. Neden spagetti kod şeklinde yazılmış scriptlerde eleman acaba bu hangi sayfada vs diye başlar aramaya ki bu da zamandan çalar iş gücü azalır. Ama classlarda hatta MVC mimaride herşeyin yeri ayrı olduğundan kişi nokta atışı yaparak istediği yeri kolaylıkla bulur ve yönetebilir veya değiştirebilir.
Bu anlattıklarımdan fonksiyonlar bir işe yaramaz ifadesi de anlaşılmasın. Fonksiyonları daha basit işlemlerde kullanabilirsiniz. Mesala biçimlendirilmiş bir echo çıktısı için gidip de class yazmak akıllıca değildir. Ama bir DB sınıfı için de fonksiyonlar yazmak akıllıca değildir.
sanırım çok konuştum