我不时会看到有关连接数据库的问题.
大多数答案不是我这样做的方式,或者我可能没有正确得到答案.无论如何; 我从来没有想过这个,因为我这样做对我有用.
但这是一个疯狂的想法; 也许我这样做是错的,如果是这样的话; 我真的想知道如何使用PHP和PDO正确连接到MySQL数据库并使其易于访问.
我是这样做的:
首先,这是我的文件结构(剥离):
public_html/
* index.php
* initialize/
-- load.initialize.php
-- configure.php
-- sessions.php
Run Code Online (Sandbox Code Playgroud)
index.php
在最顶端,我有require('initialize/load.initialize.php');.
load.initialize.php
# site configurations
require('configure.php');
# connect to database
require('root/somewhere/connect.php'); // this file is placed outside of public_html for better security.
# include classes
foreach (glob('assets/classes/*.class.php') as $class_filename){
include($class_filename);
}
# include functions
foreach (glob('assets/functions/*.func.php') as $func_filename){
include($func_filename);
}
# handle sessions
require('sessions.php');
Run Code Online (Sandbox Code Playgroud)
我知道有更好或更正确的方法来包含类,但不记得它是什么.还没有时间去研究它,但我认为这是有道理的autoload.类似的东西......
configure.php
这里我基本上只是覆盖一些php.ini -properties并为该站点做一些其他的全局配置
connect.php
我把连接放到一个类上,所以其他类可以扩展这个...
class …Run Code Online (Sandbox Code Playgroud) 我有一个简单的PHP MVC框架,它以这种方式工作:
StaticFramework (1)
|
V
DIC (2)
|
V
HTTPRequest
|
V
App <-> Router
|
V
Controller <-> Model
|
V
View
|
V
HTTPResponse
Run Code Online (Sandbox Code Playgroud)
(1) StaticFramework是一个静态的"前端控制器",它给出了App它的默认依赖性(2) DIC(依赖注入容器),它的工作方式与Pimple类似.可以访问容器以更改这些默认依赖项.例如,Router类被注入App了DIC.
我有一个问题,因为它是一个MVC应用程序,我有3个重要的层:
注入View很容易,因为它只是一个有一个render呈现PHP或HTML文件的方法的类,所以我只需要View在我的注入一个实例Controller.
但注入Model的Controller似乎更难.每个Model都是一个单独的类,所以我不能像我那样注入它View.每个人Model也可能需要其他依赖,例如a Database或XML类.
此外,我无法预测Controller将需要哪些型号,因为它可能需要其中的几种,例如,ArticleController需要ArticleModel和UsersModel. …
php model-view-controller dependencies dependency-injection inversion-of-control