在混合PHP和HTML时集成干净的代码

在混合PHP和HTML时集成干净的代码,php,html,oop,Php,Html,Oop,我发现一个组织在混合使用PHP和HTML时存在一个主要问题,它看起来很糟糕,所以我想知道创建一组面向对象的方法是否可行,例如: class MainOO { public $Database; public function __construct($Server,$User, $Password, $DB){ if ($this->Database = new mysqli($Server,$User,$Password,$DB)){

我发现一个组织在混合使用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代码是可行的吗?

您可能也希望在代码中使用isset() e、 g


e、 g如果设置了变量,则显示它,否则不显示任何内容

它可以工作,对吗?据你说,看起来好多了,对吧?你知道更好的选择。。。我不确定还有什么需要补充的。我建议只看一看Zend代码样式指南中的错误:PI没有通读整个问题,但是,不推荐使用简短的\u open\u标记,因为默认情况下它们是关闭的。您希望避免未定义的变量通知和警告,这没关系,但建议的方法不是最佳实践