2013-10-25 66 views
3

我發現一個組織是混合PHP和HTML的主要問題,它看起來很可怕,所以我想知道是否可以創建一組面向對象的方法因爲這樣:在將PHP和HTML混合時集成Clean代碼

class MainOO { 

    public $Database; 

    public function __construct($Server,$User, $Password, $DB){ 
     if ($this->Database = new mysqli($Server,$User,$Password,$DB)){ 
      return true; 
     } 
     return false; 
    } 

    public function User_Login(){ 

     $Get_Usr_Info = $this->Database->prepare("SELECT ID, Password, Salt FROM Users WHERE Username=?"); 
     $Get_Usr_Info->bind_param('s',$_POST['username']); 
     $Get_Usr_Info->execute(); 
     $Get_Usr_Info->store_result(); 
     $User_Number = $Get_Usr_Info->num_rows; 
     $Get_Usr_Info->bind_result($UserID, $Stored_Password, $Stored_Salt); 
     $Get_Usr_Info->fetch(); 
     $Get_Usr_Info->close(); 
     if ($User_Number !== 1){ 
      $Error = "Wrong Username Specified Or Password Is Incorrect"; 
      header ("Location: index.php?Errors=".urlencode($Error)); 
      exit; 
     } 
     // Continue with login script 

    } 
    public function Logout(){ 
     if (session_status() !== PHP_SESSION_DISABLED){ 
      session_destroy(); 
      header ("Location: LoggedOut.php"); 
      exit; 
     } 
    } 


} 

然後HTML端:

<?php 
    include "MainOO.php"; 
    $MainOO = new MainOO("host","user","password","database"); 
?> 
<div class="example"> 
    <div class="example left"> 
    <?php 
    $MainOO->User_Login(); 
    ?> 
    </div> 
</div> 

它仍然混合PHP & HTML,但它使看起來非常的地獄要比擁有HTML的中間PHP堆整潔。

我完全意識到我可以遷移到已經設置的MVC框架(這個主題看起來像),甚至使用模板引擎如smarty,但我想盡可能地避免這種情況。那麼這是一個可行的選項,在PHP中使用整潔的PHP代碼?

+0

是....... ...... – user2092317

+1

它的作品,對吧?據你看,它看起來更好,對吧?你意識到更好的選擇......我不確定要添加什麼。 – deceze

+0

是的我很完美 –

回答

0

你可能會想在代碼中使用isset()函數太 如

<?= (isset($variable)) ? $variable : ''; ?>

例如,如果變量isset則顯示它,否則什麼都不顯示

+1

沒有什麼錯誤:P –

+0

我沒看過通過整個問題,但是,使用short_open_tags已被棄用,因爲它們默認是關閉的。你想避免未定義的變量通知和警告,沒關係,但建議的方式不是最佳實踐 – DanFromGermany