เฟรมเวิร์กที่พัฒนาขึ้นใน "บริสุทธิ์" PHP โดยการประเมินค่าความสะดวกในการทำงานกับ PHP เวอร์ชัน 8.2.1 การเขียนโปรแกรมวัตถุวัตถุ (POO) เฟรมเวิร์กนี้ประกอบด้วยสถาปัตยกรรม Model View Controller (MVC) ที่ส่งเสริมความง่ายความสามารถในการปรับขนาดและการบำรุงรักษาระบบเว็บ
#framework #php #mvc
composer install
php cli -d set
php cli -d load
ข้อสงสัยหลักเกี่ยวกับกรอบ:
รูปแบบของฐานข้อมูลของคุณควรอยู่ในโฟลเดอร์ database/schema ซึ่งไฟล์ตารางทั้งหมดจะต้องแยกออกเป็นลำดับการสร้าง ASC
วิธีการขึ้นและลง ถูกกำหนดไว้สำหรับการโต้ตอบกับคำสั่งเทอร์มินัลเช่น วิธี การทำหน้าที่ปีนขึ้นไปปฏิสัมพันธ์นี้กับธนาคารในขณะที่ วิธีการลง เพื่อลดการโต้ตอบนี้ไปยังธนาคาร ในการกำหนดตารางใหม่คุณต้องทำตามมาตรฐานด้านล่าง วิธี 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
เช่นเดียวกับการสร้างตารางคุณต้องกำหนด วิธีการขึ้นและลง
ตัวอย่างวิธีการ:
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 แอปพลิเคชัน
ตัวอย่างรอบสามัญ get:
$obRouter->get('/url/exemplo', [
function($request) {
return new Response(200, PagesHomeController::get($request));
}
]);
ตัวอย่างเส้นทาง Dynamic Put:
$obRouter->put('/url/exemplo/{id}', [
function($request, $id) {
return new Response(200, PagesHomeController::edit($request, $id));
}
]);
ตัวอย่าง ROTA กับ Middleware Post:
$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 ได้รับการกำหนดค่า: