I nasıl sınıfları kurmak gerekir?

1 Cevap php

Ben kullanıcı üretilen verilerin bir site kurmak için oop ile çalışmaya başlıyorum.

There are different types of data coming from my classes. I have functions that get a list of data from the database, and functions to just select one item from those lists. For example

function Get_Article($aid); //Gets an article
function Get_Users_Articles($uid); //Gets a multidemsional array of the users 
                                   //articles
function Get_Latest_Articles(); //Self explanatory by now
function Get_Local_Articles($zip); //Gets articles written by local users
function Get_Local_Users($zip); //Gets all local users

function Get_All_Article_Comments($aid); //Gets a multidimensional array of the 
                                     //comments written for an article
function Get_Article_Comment($cid); //Gets a single article comment

Now, how should I set up my classes to organize these functions. Should I just put them all in the same class, or should I seperate the comments from the articles, or maybe seperate the functions that retrieve a single article/comment from those that retrieve a list of articles/comments. I might add more things to the site later that allow for comments, so I was thinking of just seperating all the comment functions from the others. Also, the "local" functions all use the same function that performs the math, so should I group those together, or maybe just use inheritance... any suggestion???

While on the subject of oop, I have a user class that looks like... private $user = array();

public function Get_User_Data($uid){
  //get user data from database
  return $this->user;
}

public function Set_User_Data($user_array){
  $this->user = $user_array;
}

public function Add_User(){
  //INSERT data from $this->user into the database 
}

Şimdi herkes bu çoğunlukla, ben onun yerine üye değişkenleri ekleme, Add_User işlevi için parametre olarak user_data ayarlamanız gerekir görünüyor yolu ile yanlış bir şey görmüyor?

1 Cevap

Öncelikle eski usul stil fonksiyonları alarak ve nesnelerin içinde onları sarma yapmaz anlamak için gereken tüm sizin kod nesne yönelimli, sadece daha karmaşık ve korkunç çirkin prosedürel kod yazıyoruz demektir.

İkincisi Ben kuvvetle aslında ben en azından orada çeşitli PHP Altyapıları incelemek için biraz zaman ayırın benim tavsiyeleri çok yorucu olamaz, tavsiye ederim. Eğer bunlardan herhangi birini kullanmak asla olsa, ben bunlardan herhangi okuyan size nesne yönelimli ilkeler ve genel olarak iyi bir uygulama tasarımı daha iyi bir kavrayışa verecektir garanti oldukça güvende hissediyorum. Eğer daha önce hiç görmedim, şu başlatmak için bir yer vermelidir:

  • Zend Framework
  • Symfony
  • CakePHP
  • Güneş Çerçeve

Eğer Martin Fowler veya Enterprise Application Architecture Örüntülerinin duymadım eğer Ayrıca, ben kesinlikle denemek ve bir kopyasını almak öneriyoruz. O kelimenin tam anlamıyla HER popüler web çerçevesinde kullanılmakta olan temel desenleri sağladı kitap yazdı.

Benim 'manuel cevabı okumak' için çok:-P

Özel durumda ben veritabanı erişim mantığı ve etki alanı mantığı içeren temel bir Active kayıt deseni ile başlamak istiyorum. Desen bu tip, her veritabanı tablo (kullanıcılar, makaleler, yorumlar) ayrık bir nesne tarafından temsil edilmektedir. Kullanıcılar için temel Active Record sınıfı, belirli bir kullanıcı veya kullanıcıların bir listesini yanı sıra, bir kullanıcıyı eklemek güncelleme veya silme fonksiyonlarını almak için tüm fonksiyonları içerecektir. Buna ek olarak, bir kullanıcı Active Record sınıf bir kullanıcının yazılar ve yorumlar yük yöntemleri içerecektir.

Bir kabuk Kullanıcı sınıfı bu gibi görünebilir:

class User extends Active_Record {

public function find() {}

/**
	Single function performs inserts and updates for the object
**/
public function save() {}

public function delete() {}

public function getArticles() {}

public function getComments() {}
}