3

私は組織が PHP と HTML を混在させることで大きな問題を抱えていることを発見しました。それはひどく見えるので、次のような一連のオブジェクト指向メソッドを作成することが実行可能なオプションであるかどうか疑問に思っています。

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 などのテンプレート エンジンを使用したりできることは十分承知していますが、これはできるだけ避けたいと考えています。 html内でよりきちんとしたPHPコードを持つ実行可能なオプション?

4

1 に答える 1

0

おそらく、コードでも isset() を使用したいと思うでしょう。

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

たとえば、変数が設定されている場合はそれを表示し、それ以外の場合は何も表示しません

于 2013-10-25T13:09:16.857 に答える