在“純” 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文件中配置了: