在“纯” php中开发的框架是通过评估使用PHP版本8.2.1对象编程(POO)的易用性。该框架由模型视图控制器(MVC)架构组成,该体系结构可促进Web系统的简易模块化,可扩展性和维护。
#framework #php #mvc
composer install
php cli -d set
php cli -d load
关于该框架的主要疑问:
数据库的方案应在database/schema文件夹中,其中所有表文件必须分为ASC创建顺序。
为与终端命令进行交互定义了上下方法,IE UP方法可将这种交互攀升给银行,而将这种交互的倒数方法降低到银行。要定义一个新表,您必须按照UP方法下方的标准化遵循标准化,在此设置新列,该表仅通过调用所需数据类型的方法来分配新变量$表。
示例UP方法:
public function up(): void
{
(new Database)->create('nomeDaTabela', function(Blueprint $table) {
$table->id();
$table->varchar('nomeDaColuna', 100)->notNull();
});
}
下降方法示例:
public function down(): void
{
(new Database)->dropIfExists('nomeDaTabela');
}
数据插入文件应在database/information文件夹中,其中所有表文件必须分为ASC创建顺序。
与表创建一样,您还必须定义上下方法。
示例UP方法:
public function up(): void
{
(new Database('nomeDaTabela'))->insert([
'nomeDaColuna' => 'valor a ser inserido'
]);
}
下降方法示例:
public function down(): void
{
(new Database('nomeDaTabela'))->delete('id = 1 ');
}
。
| 根据 | 命令 | 争论 | 功能 |
|---|---|---|---|
| PHP CLI | -db | 放 | 在数据库中加载database/schema表。 |
| PHP CLI | -db | 降低 | 将database/schema表放在数据库中。 |
| PHP CLI | -db | 重置 | 为数据库中的database/schema表充值。 |
| PHP CLI | -db | 加载 | 将信息database/information插入数据库。 |
| PHP CLI | -db | 新鲜的 | 从数据库中删除database/information信息。 |
| 根据 | 命令 | 争论 | 功能 |
|---|---|---|---|
| PHP CLI | -建造 | 控制器 | 在app/Controller文件夹中创建一个新的控制器。 |
| PHP CLI | -建造 | 模型 | 在app/Model/Entity文件夹中创建一个新模型。 |
| PHP CLI | -建造 | 桌子 | 在database/schema文件夹中创建一个新表。 |
实用程序:如果将argumento:diretorio将被创建一个新的重命名文件,使其更容易。
。
框架路由在应用程序routes文件夹中。
示例常见的获取:
$obRouter->get('/url/exemplo', [
function($request) {
return new Response(200, PagesHomeController::get($request));
}
]);
示例动态put路线:
$obRouter->put('/url/exemplo/{id}', [
function($request, $id) {
return new Response(200, PagesHomeController::edit($request, $id));
}
]);
示例与中间件帖子的rota:
$obRouter->post('/url/exemplo', [
'middlewares' => [
'basic-auth'
],
function($request) {
return new Response(200, PagesHomeController::set($request));
}
]);
。
申请具有一些可以由控制器访问的方法:默认情况下:
如何访问这些方法?
getPostvars示例:
public function metodoExemplo(Request $request): void
{
$request->getPostVars();
}
。
模型应在app/Model/Entity文件夹中。
默认情况下,每个模型都有4种方法:
模型类的声明:必须生成每个模型以保存特定表。
班级示例:
class Post
{
public int $id; // coluna id associada no banco
public string $title; // coluna title associada no banco
public string $content; // coluna content associada no banco
public function create(): bool
{
$this->id = (new Database('post'))->insert([
'title' => $this->title, // referenciando nome da coluna com o valor
'content' => $this->content
]);
return true;
}
}
示例创建方法:
public function create(): bool
{
$this->id = (new Database('nomeDaTabela'))->insert([
'nomeDaColuna' => $this->atributoDaClasse
]);
return true;
}
示例更新方法:
public function update(): bool
{
return (new Database('nomeDaTabela'))->update('nomeDaColuna = '.$this->atributoDaClasse, [
'nomeDaColuna' => $this->atributoDaClasse
]);
}
示例删除方法:
public function delete(): bool
{
return (new Database('nomeDaTabela'))->securityDelete('nomeDaColuna = '.$this->atributoDaClasse);
}
示例获取方法:
public static function getTableName(
string $where = null,
string $order = null,
string $limit = null,
string $fields = '*'
): PDOStatement
{
return (new Database('nomeDaTabela'))->select($where, $order, $limit, $fields);
}
。
中间件是该路由的中介机构,并且在应用程序的app/Http/Middleware文件夹中,它们是在include/app.php文件中配置的,其中必须为每个中间件指定一个名称。
所有中间件必须具有默认方法:
中间件示例:
class MiddlewareExemplo
{
private function checkStatus(Request $request): void
{
$vars = $request->getPostVars();
if ($vars['status'] == 'error') {
throw new Exception("A página está com erro");
}
}
public function handle(Request $request, Closure $next): Response
{
$this->checkStatus($request); // se o status não estiver com erro carrega a aplicação
return $next($request);
}
}
设置中间件:
MiddlewareQueue::setMap([
'middleware-exemplo' => AppHttpMiddlewareMiddlewareExemplo::class
]);
。
视图用于在HTML中声明的变量,以替换为数据库中的内容。
渲染视图内容示例:
public static function getPage(): string
{
// diretorio da pasta: resources/view
return View::render('pasta/exemploArquivoHtml', [
'nomeDaVariavel' => $conteudoAlterado
]);
}
。
控制器应在app/Controller文件夹中。
默认情况下,每个控制器都有5种方法:
示例获取方法:
public static function get(): array
{
$itens = [];
$results = EntityExemplo::getExemplos(); // model Exemplo
while($obExemplo = $results->fetchObject(EntityExemplo::class)) {
$itens[] = [
'nomeDaColuna' => $obExemplo->atributoDaClasse
];
}
return $itens;
}
示例帖子方法:
public static function set(Request $request): bool
{
$vars = $request->getPostVars();
$obExemplo = new EntityExemplo;
$obExemplo->atributoDaClasse = $vars['valorPost'];
$obExemplo->create();
return true;
}
示例删除方法:
public static function delete(Request $request, int $id): bool
{
$vars = $request->getPostVars();
$obExemplo = EntityExemplo::getExemplos('nomeDaColuna = '.$id); // busca o valor pelo id
$obExemplo->delete();
return true;
}
框架配置文件位于应用程序的includes/app.php文件夹中。
在App.php文件中配置了: