Home > Article > Backend Development > PHP development model without using frameworks
PHP is a very popular server-side scripting language. In the development of web applications, there are many PHP frameworks that can help developers improve efficiency and maintainability. However, in some cases, not using a frame is a good option. This article will introduce some PHP development patterns that do not use frameworks.
MVC (Model-View-Controller) is a commonly used design pattern that divides an application into three core parts: Model , views and controllers. This pattern can simplify the code structure and improve maintainability and testability. Without using a framework, we can implement the MVC design pattern manually.
The model is the part responsible for processing data, including reading and storing data. The view is the part responsible for displaying data and presenting the data to the user. The controller is the part responsible for scheduling and processing requests. It receives user requests and passes them to models and views.
The following is a simple sample code:
<?php //模型 class Model { protected $db; public function __construct() { $this->db = new PDO("mysql:host=localhost;dbname=mydatabase", "username", "password"); } } //视图 class View { protected $data; public function render($template) { include($template); } public function assign($key, $value) { $this->data[$key] = $value; } } //控制器 class Controller { protected $model; protected $view; public function __construct($model, $view) { $this->model = $model; $this->view = $view; } public function index() { $result = $this->model->get_data(); $this->view->assign('data', $result); $this->view->render('template.php'); } } //实例化控制器 $model = new Model(); $view = new View(); $controller = new Controller($model, $view); //处理请求 $controller->index();
Routing is a great tool that can help us handle URL requests and Distributed to the corresponding controller. Without using a framework, we can implement routing manually and tightly integrate routing and controllers.
The following is a simple sample code:
<?php //路由规则 $routes = array( '/' => 'home.php', '/about' => 'about.php' ); //获取请求路径 $url = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); //查找路由规则 $file = $routes[$url]; //加载对应的控制器 if ($file) { include($file); }
For most applications, operating on data is an important part. Without using a framework, we can write our own data access classes to handle database operations. Doing so helps abstract away the data access layer and also helps improve code reusability.
The following is a simple sample code:
<?php //数据访问类 class DataAccess { private $connection; public function __construct($host, $username, $password, $database) { $this->connection = new PDO("mysql:host=$host;dbname=$database", $username, $password); } public function query($query) { return $this->connection->query($query); } public function prepare($query) { return $this->connection->prepare($query); } public function lastInsertId() { return $this->connection->lastInsertId(); } public function beginTransaction() { return $this->connection->beginTransaction(); } public function commit() { return $this->connection->commit(); } public function rollBack() { return $this->connection->rollBack(); } } //实例化数据访问类 $database = new DataAccess('localhost', 'username', 'password', 'mydatabase'); //使用数据访问类执行查询操作 $result = $database->query('SELECT * FROM users'); //使用数据访问类执行预处理操作 $stmt = $database->prepare('INSERT INTO users (username, password) VALUES (:username, :password)'); $stmt->execute(array('username' => 'john', 'password' => 'password123'));
Summary
This article introduces some PHP development patterns that do not use frameworks. By implementing the MVC design pattern, using routing, and custom data access classes, we are able to better maintain and extend our applications while gaining a greater understanding of how the application works. Of course, frameworks are still very useful tools when it comes to complex applications.
The above is the detailed content of PHP development model without using frameworks. For more information, please follow other related articles on the PHP Chinese website!