我的结构中有类:
require_once("classes/config.php");
require_once("classes/database.php");
require_once("classes/template.php");
require_once("classes/route.php");
require_once("classes/user.php");
$config = new config;
$route = new route();
$db = new database ($config['db_host'], $config['db_name'], $config['db_user'], $config['db_pasw']);
课程'模板'使用模板文件。 使用数据库或用户类的正确方法是什么,例如,在模板类中?
它现在如何运作:
global $user;
但它不是良好的编码习惯,对吧?
答案 0 :(得分:0)
因此,在User
类中,您可以执行类似于面向对象的方式:
class User{
private $user;
public function getUser(){
return $this->user;
}
}
要让用户加入您的脚本,
$userObj = new User();
$user = $userObj->getUser();
答案 1 :(得分:0)
依赖注入。
将要在模板中呈现的数据收集到将注入模板渲染功能的数据集中,如:
// This can be class or array, as you prefer
$viewData = array(
'user' => $user,
'something_else' => ...
);
$template = new Template('id');
$template->render($viewData);
答案 2 :(得分:0)
是的,这不是很好。 您可以在单独的配置类中指定连接变量。 然后,在必要时将其连接到构造函数并使用它。 因此,您的项目中不会有单个全局变量。
这是一个例子。但你必须知道。这是一辆自行车,仅举例来说。但这里没有DI(依赖注入):
配置
namespace Model;
class ConfigModel
{
public $db = 'name_db';
public $user = 'user_u';
public $pass = '123456';
public $protocol = 'https:';
public $brand = 'MyBrand.com';
public $salt = 'ougfhdsihgsugsdopgf';
public $path = __DIR__;
}
DB class
namespace Model;
class DB
{
protected $host = 'localhost';
protected $db = '';
protected $charset = 'utf8';
protected $user = '';
protected $pass = '';
public function __construct() {
$config = new ConfigModel();
$this->db = $config->db;
$this->user = $config->user;
$this->pass = $config->pass;
$dsn = "mysql:host=$this->host;dbname=$this->db;charset=$this->charset";
$opt = array(
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC
);
try {
$this->DBconnect = new \PDO($dsn, $this->user, $this->pass, $opt);
}
catch( PDOException $Exception ) {
echo $Exception->getMessage();
echo $Exception->getCode();
if(!empty($Exception->getCode())){
die('Error');
}
}
}
public function showAllUser() {
$db = $this->DBconnect->prepare('SELECT `mail` FROM `users`');
$db->execute();
return $db->fetchAll();
}
}
答案 3 :(得分:0)
我不明白,您是否想要呈现全局用户信息,例如,用户名?我认为使用用户详细信息或登录详细信息的正确方法是使用$ _SESSION,之后使用$ _SESSION ['user']可以在模板中呈现用户详细信息。