2012-12-27 60 views
0

我已經開始學習一個面向對象的類,並且我已經構建了一個名爲accountactions的類,並且我想知道我是否寫得很好。面向對象的類,如何在類中放置類

該類在文件中:accountactions.class.php。

<?php 

class accountactions(){ 

    public function register($login, $password, $email){ 

     //Zapisujemy dane wysłane formularzem 
     $this->username = mysql_real_escape_string($login); 
     $this->password = mysql_real_escape_string($password); 
     $this->email = mysql_real_escape_string($email); 

     //Hash password 
     $this->password = md5(sha1($this->password)); 

     $db->simplequery("INSERT INTO radio_users(id, username, password, email) VALUES('', '$this->username', '$this->password', '$this->email')"); 

    } 


} 

?> 

的register.php文件:

<?php 

    require_once("accountactions.class.php"); 

    $account = new accountactions(); 

    $account->register('samplelogin', 'samplepassword', '[email protected]'); 

?> 

,我有一些問題,這個片段:

$db->simplequery("INSERT INTO radio_users(id, username, password, email) VALUES('', '$this->username', '$this->password', '$this->email')"); 

我如何加入我的DB類,以我的賬戶類?

我想保持一種模式,我可以這樣做:

$帳戶 - >寄存器( '$ _ POST [' 登錄 ']', '$ _ POST [' 密碼 ']',' $ _ POST [ '郵件']');

除非有更好的方法來做到這一點。

我是新手在OOP所以任何提示和指導方針表示讚賞。

+0

我給你的第一個注意是爲你的單詞使用某種下劃線或駝峯。 accountactions可能應該是account_actions或accountActions,甚至AccountActions,但其中任何一個都將有助於提高代碼的可讀性。 – DaOgre

+0

但整個代碼可以嗎? –

+0

您肯定會從下載已建立的Web框架(Symfony,Zend,Cake等)並查看它們的工作方式中受益。這樣做將真正解釋如何使用對象組合一個基於Web的應用程序。 – halfer

回答

1

這段代碼主要是好的,但有些事情我認爲是不好的。首先,我認爲你應該遵循一些命名慣例,因爲accountactions是一個糟糕的clas名稱。對於面向對象,我認爲你應該使用camelcase的一些變體(所以accountActions或AccountActions - 我建議你使用後者)。然後,班級名稱後面不應該有括號。我還建議你將每個大括號分開放置,但這取決於你的個人喜好。然後,你的第一個評論是波蘭語 - 我建議你總是用英語寫所有評論,變量名等,只是因爲每個人都會理解它。然後在註冊方法中,您將變量分配給類的屬性,但您之前尚未聲明它們(或者至少您沒有在代碼中向我們展示過它)。同樣在插入查詢中,您嘗試將id字段(我假設它是唯一的,非空無符號整數與auto_increment - 如果是的話,您不應將其包含在您的查詢中)插入一個emtpy字符串''。

class AccountActions 
{ 
    protected $Username; 
    protected $Password; 
    protected $Email; 
    protected $DB; 

    public function __construct() 
    { 
     $this->DB = //instantiate your database driver of choice here, e.g. mysqli 
    } 

    public function register($Username, $Password, $Email) 
    { 
     //We escape the provided values and populate the object's properties with them 
     $this->Username = mysql_real_escape_string($Login); 
     $this->Password = mysql_real_escape_string($Password); 
     $this->Email = mysql_real_escape_string($Email); 
     //Hash password 
     $this->Password = md5(sha1($this->Password)); 
     $Query = "INSERT INTO radio_users(username, password, email) 
        VALUES('$this->Username', '$this->Password', '$this->Email')"; 
     $this->DB->simplequery($Query);  
    } 
} 

我如何加入我的DB類,以我的賬戶類:我想這種方式編寫代碼?

不知道你在這裏的意思是什麼,但如果你想訪問您的班級裏面的一些數據庫驅動程序,您應該添加將存儲數據庫驅動程序,並在構造函數初始化它(或者你可以有一個屬性一個靜態屬性,將保存數據庫驅動程序)。

還不確定你的標題問題是什麼意思 - 如果你想使用內部類(在另一個類中聲明的類) - 它們在PHP中不可用。

我也鼓勵你在學習基本的OOP之後選擇一些PHP框架 - Zend Framework是我最喜歡的。

相關問題