cosmicmedia / cosmicframework
CosmicMedia MVC框架,包含通用的MVC实现和CosmicMedia API实现
Requires
- klein/klein: ^2.1
- league/plates: ^3.3
This package is not auto-updated.
Last update: 2020-08-14 05:41:18 UTC
README
实现
MVC
CosmicFramework中的MVC实现基于3个类,"Database"(数据库),"Controller"(控制器)和"View"(视图)。这3个类共同工作,最终目标是渲染用户页面。
每个对象的函数
Database(即模型)
Database是一个用于连接和查询配置数据库的简单对象。在CosmicFramework中,要创建一个模型,将此数据库集成到从类中获取数据的类中,你需要创建一个扩展数据库的类。然后你可以将此模型包含在控制器中,以便访问你定义的方法来获取数据。
View
View包含要渲染的模板、渲染器(plates)以及传递给模板的数据。它在功能上是独立的,但控制器持有一个用于渲染。
Controller
Controller包含渲染视图对象背后的逻辑,例如运行包含的模型逻辑、身份验证等。在其使用过程中,你会创建一个扩展Controller的类,并实现抽象"logic"方法的逻辑。这个逻辑方法在调用Controller->render()时会自动运行。
示例实现
test.php
require_once __DIR__ . '/../vendor/autoload.php';
use CosmicFramework\MVC\Database;
Database::init("host", "database", "root", "");
// Create a new instance of the TestController
$test_controller = new TestController();
// Add a view to the controller
$test_controller->addView(new View("test_view", __DIR__));
// render() first runs the controllers logic() method, then renders the view
$test_controller->render();
_test_controller.php
use CosmicFramework\MVC\Controller;
class TestController extends Controller {
// This logic is ran when calling the controller's render() method
public function logic() {
require(__DIR__ . "/test_model.php");
$test_model = new TestModel();
$data = $test_model->GetData();
$this->view->setItems($data);
}
}
_test_model.php
use CosmicFramework\MVC\Database;
class TestModel extends Database {
public function GetData() {
return self::query("SELECT * FROM data");
}
}
API
CosmicAccounts
CosmicAccounts(CosmicFramework\API\CosmicAccounts)是处理CosmicAccounts API的静态辅助类。它有2个函数
o AuthenticateUser($conf_key) - 接受一个CosmicAccounts conf密钥,检查其有效性,并返回与密钥关联的权限
o AuthRedirect($public_key) - 重定向到带有用户public_key的CosmicAccounts身份验证重定向URL