Ankündigung

Einklappen
Keine Ankündigung bisher.

Klasse für Datenquelleabfragen beim MVC

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Klasse für Datenquelleabfragen beim MVC

    Ich habe einiger Fragen bezüglich Record-Klassen und DVO usw. Nun sehe ich hier und auch in anderen Foren öfters Record-Klassen, wie sie Criz hier vorgestellt hat. So wie ich das verstanden habe, ist die Aufgabe der Record-Klasse lediglich, Daten aufzunehmen und bei Anfragen wieder rauszugeben (getter, setter). Dann gibt es noch die DVO, die eine Abbildung der Datenquelle sein sollen. Eigentlich geht es mir nur darum, zu erfahren, wie die Datenquelle-Abfragen kontrolliert werden.

    Kommt also ein Besucher auf eine Seite, so ist das DVO ja noch nicht zugewiesen und die Record-Klasse ebenfalls leer. So, jetzt gibt der Besucher zur Registrierung einen Usernamen ein. Wo wird nun die Datenquelle-Abfrage gemacht, so dass der Benutzer weiß, ob es Username zur Verfügung steht oder nicht.
    PHP-Code:
    $property = array('username' => $_POST['username'], 'email' => $_POST['email']);

    if(
    $welcheKlasseIstHierfürZuständig?->fragDieDatenquelle('username'$property['username'])) {

        
    $user = new Record_User();
        
    $user->import($property);
        
    $welcheKlasseIstHierfürZuständig?->speicherInDatenquelle();

    Ich möchte hier noch meine Model und Manager-Klassen einbinden und bitte darum, mir zu sagen, ob ich zumindest auf dem richtigen Weg bin.
    PHP-Code:
    abstract class Model
    {
        private 
    $_db;
        private 
    $_table;
        private 
    $_columns = array();
        private 
    $_praefix;
        private 
    $_condition;
        
        protected function 
    __construct(array $properties)
        {
            
    $this->_db           Registry::getInstance()->database;
            
    $this->_table       lcfirst(substr(get_class($this), 0strpos(get_class($this), "Manager")));
            
    $this->_praefix   substr($this->_table01);
            
    $this->_columns   array_keys($properties);
        }
        
        
    /**
         * 
         */
        
    public function save()
        {    
            try {
                
    $properties    = array();
            
                foreach(
    $this->_columns as $value) {
                    
                    if(
    $value != $this->_praefix.'id') {
        
                        if(
    $this->$value){
                            
    $properties[$value] = $this->$value;
                        }                    
                    }
                }
                
    $save $this->_db->insert($this->_tableimplode(', 'array_keys($properties)))
                                  ->
    values($properties)
                                  ->
    execute('insert');
                
    pre($save);
            }
            catch(
    Exception $e) {
                
    pre($e->getMessage());
            }
        }
        

        
    /**
         * read the database based on the given condition
         * @param string $condition
         */
        
    protected function read($condition)
        {    
            try {
                
    $row $this->_db->select(implode(', '$this->_columns))
                             ->
    fromTable($this->_table)
                             ->
    where($condition$this->$condition)
                             ->
    execute()
                             ->
    fetchIt();                         
                
    pre($this->$condition1);
                return 
    $row;
            }
            catch(
    Exception $e) {
                
    pre($e->getMessage());
            }
        }
        
        
        
        
    /**
         * set the class variables
         * 
         * @param string $index
         * @param mixed $value
         */    
        
    public function __set($index$value)
        {
            if(
    in_array($index$this->_columns)) {
                
    $this->$index $value;
            }
            else {
                
    pre($index.' << is not a class variable');
                return 
    false;
            } 
        }

        
        
        
    /**
         * get the class variables
         * 
         * @param string $var
         */
        
    public function __get($name)
        {
            if(
    in_array($name$this->_columns)) {
                return 
    $this->$name;
            }        
            else {
                
    pre($name.' << is not a class variable');
                return 
    false;
            }
        }

    PHP-Code:
    class UserManager extends Model
    {    
            
    // diese Variablen sind eventuell eine Sache des DVO
            // aber ich weiß nicht, wie ich die DVO einbinden soll
        
    protected $uid;
        protected 
    $username;
        protected 
    $password;
        protected 
    $email;
        protected 
    $fullname;
        protected 
    $sex;
        protected 
    $birthday;
        protected 
    $member_since;
        protected 
    $is_active;
        
        public function 
    __construct()
        {
            
    parent::__construct(get_object_vars($this));
        }
        
        
    /**
         * check if email allready in use
         */
        
    public function getUserByEmail($email)
        {
            
    $this->email $email;
            return 
    $this->read('email');
        }
        
        
    /**
         * check if username is already in use
         */
        
    public function getUserByUsername($username)
        {
            
    $this->email $username;
            return 
    $this->read('username');
        }
        
        public function 
    getUserById()
        {
            
        }
        

        public function 
    save()
        {
            
    $this->password md5(rand());
            
    $this->member_since time();
            
    $this->username rnd();
            
    parent::save();
        }    

Lädt...
X