phpslides是PHP框架主要是為已創建的基礎模板設計的,用於創建Router , Api和database management ?
使用phpslides創建非常有安全的路由器,API和數據庫,創建的內置模板數據庫,該模板數據庫MySql & Sqlite數據庫還可以設置其他數據庫。
默認情況下,它具有防止SQL注射,它可以防止項目從XXS Attacks&CSRF中進行。
對於PHP的初學者來說,這是一個很好的做法
使用phpslides,來自服務器的所有請求都將重定向到phpslides進行驗證路由。並檢查請求是否與註冊路線相匹配,否則它將返回找不到404頁面? 。
除非在路由中指定,否則無法訪問phpslides項目中的任何文件或文件夾?
默認情況下,如果尚未註冊的任何文件或文件夾或收到的任何請求?
想直接訪問文件嗎?它將在幻燈片配置文件中配置,但是只有指定的話,只能在公共目錄中訪問文件。
另外,您可以指定要訪問的文件類型,或指定可以從公共目錄或所有文件夾中的每個文件夾請求的特定擴展名?
它接受所有類型的文件,圖像,視頻,音頻,文檔或純文本?
讀取phpslides默認代碼並了解每個代碼功能,代碼整潔且可讀?
首先,如果已經安裝了作曲家,我們通過在您的終端中執行此命令來創建我們的幻燈片項目。
composer create-project dconco/php_slides slide_project slide_project是您要創建的項目名稱,它是項目目錄。它將在您安裝的目標目錄中使用指定名稱創建項目
如果作曲家尚未安裝。通過執行來安裝它:
pkg install composer我們都被設定了。
我們將在VSCODE或PHPSTORM或任何其他PHP編輯器上打開我們的項目。
讓我們在瀏覽器上啟動我們的項目,您將在XAMPP或任何其他PHP服務器中設置並啟動Apache Server。如果您使用的是電話,則可以將Awebserver用於PHP服務器。並打開瀏覽器中的主機,您會看到一個默認模板。
請求路由有不同的方法。此路線方法用於從客戶端接收請求
打開編輯器中的routes/route.php文件。打開routes文件夾,the route.php文件。默認情況下,您會看到已註冊的儀表板路由,您可以將其刪除以從頭開始。
讓我們創建一個簡單的博客幻燈片。因此,我們將註冊路線,我們需要一個Login Page , Register , Profile和Posts Page 。讓我們在route.php文件中註冊PUR路由並寫示例:
<?php
include_once dirname ( __DIR__ ) . " /vendor/autoload.php " ;
use PhpSlides Route ;
use PhpSlides view ;
Route:: config ();
Route:: view ( " /login " , " ::Login " );
?>上面的示例解釋了:
首先,我們從供應商目錄中導入自動加載文件,因此我們可以使用所有類名。
use PhpSlidesRoute我們將其用於導入我們的路由類使用。
Route::config函數必須在我們的代碼開頭指定。它使phpslides配置我們的網站路線並使其非常安全,從而可以訪問配置路由和請求的路徑。
Route::config函數採用1個布爾參數,該參數指示是否允許日誌請求。默認情況下,它設置為true。因此,按照每個請求,請將請求標題信息寫入.log文件。
Route::view功能允許您創建一個視圖路由。
傳遞給它的參數將為兩個,第一個參數指定應要求的路由以渲染第二個參數。
第二個參數渲染可以使用::( Double colon )和文件名訪問的視圖目錄中的文件。我們在視圖目錄中創建的任何文件都必須是格式fileName.view.php , fileName是視圖文件的名稱, .view.php是文件擴展名,因此phpslides會注意到它是一個視圖文件。
因此,讓我們創建一個名為Login.view.php的新文件,因為我們已經在路由中註冊了它。然後,我們可以編寫一個小示例HTML代碼。
<html>
<head>
<title>Login Page</title>
</head>
<body>
<h2>Login Page</h2>
<input type="email" name="emai" />
<input type="password" name="password" />
<button type="submit">Login</button>
</body>
</html>獲取路線方法的示例
<?php
use PhpSlides Route ;
use PhpSlides view ;
Route:: config ();
Route:: get ( " /login " , Route:: view ( " ::Login " ));
?>您會看到視圖和獲取路線之間的區別。在視圖路由下,您無需使用Route::view獲取視圖文件,而是將視圖寫為第二個參數中的字符串。
但是在Get路線中,用作回調功能的第二個參數採用任何類型的代碼。例如,字符串,數組,功能。由於它直接將其返回到客戶端。使用GET路線,要接收的特定URL的請求方法必須是GET請求,因此作為所有路線方法。
使用閉合功能方法獲取路線
Route:: get ( " /login " , function () {
return Route:: view ( " ::Login " );
});它返回登錄視圖頁面,我們可以將任何PHP值返回到瀏覽器。
所有路由方法都有第二個參數作為回調函數,該函數採用功能方法或任何其他方法。
獲取帶有URL參數的路由方法帶有關閉
Route:: get ( " /posts/{id} " , function ( int $ id ) {
return " Posts ID = " . $ id
});上面的示例註冊一個新的獲取路由,其中有 /帖子請求,該請求以ID的功能閉合參數接收穫取請求。如果請求為/post/2,則它將返回“帖子id = 2”,它獲取ID值並將其發送到客戶端/瀏覽器。
後路線方法的示例
<?php
use PhpSlides Route ;
use PhpSlides view ;
Route:: config ();
Route::post( " /add_user " , ());
?>它調用郵政方法,指示僅當request_method是郵政請求時,才能執行後路由函數。並且可以在提交表單數據中使用。
第二個參數為空,可以返回JSON格式,因為POST方法通常用於發送以JSON格式返回數據的POST請求,第二個參數可以包含用於回調函數的任何格式
這就是休息路線的方式。
PUT路線方法的示例
Route::put( " /user " , ());PUT方法就像發布請求一樣,將信息或數據添加到特定的文件或數據庫中。
更新路由方法的示例
Route::update( " /user/{id} " , ());更新方法通常用於更新數據庫中的信息。
刪除路由方法的示例
Route::delete( " /user/{id} " , ());刪除方法通常用於刪除數據庫中的信息。
任何路線方法的示例
Route::any( " /user/{id} " , ());使用Route::any()方法,如果您要接受所有類型的請求,則可以使用。可以根據請求的路由方法發布,獲取,放置,更新或刪除。
未發現路由方法的示例
Route:: any ( " * " , Route:: view ( " ::errors::404 " ));在上面的未發現示例中,我們創建了一個任何路由,並使第一個參數為* ,該參數指示只要沒有路由與請求的URL匹配時要返回。
未發現路由應在註冊路線的結束時,因此當上述所有路由不匹配時,它可以執行。
在第二個參數中,我們導航以view文件夾並在view目錄中創建一個名為errors的文件夾,然後創建一個名為404.view.php的頁面
您可以創建一個呈現頁面或函數的多個路由URL。
創建具有數組和其中URL列表的多個URL。可以使用任何路由方法。
注意:使用{}捲曲括號的路由參數時,您不能使用多個URL
Route:: view ([ " / " , " /index " , " /dashboard " ], " ::dashboard " );該示例解釋說,每當請求的URL匹配數組中指定的URL時,並且它會在瀏覽器中呈現dashboard.view.php 。所有路由方法都接受多個URL。還可以為404頁創建多個URL。
PhpSlides允許您能夠訪問類控制器中的路由參數鍵。
您可以使用任何路由方法進行路由控制器,除了查看方法。讓我們繼續使用方法。
我們確實在您項目的根目錄中的Controller目錄中創建了簡單的類組件。
導航到Controller目錄並創建您選擇的控制器名稱,但必須使用此格式ClassName + Controller.php ,該名稱應為ClassNameController.php 。
因此,讓我們創建一個名為UserController.php的新控制器。讓我們導航到創建的文件並在其中編寫一些代碼。
<?php
namespace PhpSlides Controller ;
final class UserController extends Controller
{
public function __invoke ( int $ id ) {
return " <h2>Get User with ID = { $ id } </h2> " ;
}
}
?>在上面的此示例中,我們在/controller文件夾中創建了一個名為UserController.php的文件。
我們為類控制器創建了一個名稱空間,該名稱空間將用於調用類。我們創建了名為UserController類,並將其擴展到Controller類,該類使您可以訪問某些受保護的功能。
確保在每個具有名稱空間的創建類組件後,您應該運行以下命令以自動加載每個類。
composer slides-refresh課程中的最終關鍵字描述了類應該是最終的,並且不能擴展到另一個類,如果應該擴展類,則可以將其刪除。
我們創建了稱為__invoke的公共功能,該功能在路由中獲取閉合參數,該函數將用於獲取url參數並返回回調函數的值。因此,它獲取了CLASURE $ ID參數,並將其描述為使用PARAM名稱之前的int的整數。
讓我們註冊用戶路由並使其成為路由,可以根據使用情況使其成為任何類型的路由請求。
<?php
use PhpSlides Route ;
use PhpSlides Controller UserController ;
Route:: config ();
Route:: get ( " /user/{id} " , [ UserController::class ]);
?>在上面的示例中,我們已經創建了一個名為UserController的類,並創建了一個具有id URL參數的GET Route方法。
然後,我們渲染UserController類, id參數已通過__invoke函數發送到UserController類。
在我們的類控制器中,我們還可以為不同的路由請求創建多種方法。
<?php
final class UserController extends Controller
{
public function __invoke () {
return " <h2>Invoked User Successful. Receieved all users successfully.</h2> " ;
}
public function User ( $ id ) {
return " <h2>Received an ID - $ id for a user.</h2> " ;
}
}
?>在UserController中,我們創建了另一種名為User()的方法,該方法將一個參數作為id URL請求參數的$id 。
因此,讓我們在路由中使用User()類方法。
Route:: get ( " /user " , [ UserController::class ]);
Route:: get ( " /user/{id} " , [ UserController::class, ' User ' ]);在第一個功能中沒有URL參數,因為在這種情況下,我們將返回所有可用用戶,而不是每個用戶。
我們創建了第二個函數作為/user/{id} ,這意味著我們將id URL參數傳遞到了User()路由方法中。
通過將User()作為User的方法名稱傳遞到路由控制器陣列中,在數組的第二個索引中,只能採用兩個數組值。
可以添加盡可能多的方法,並儘可能多地添加許多URL參數。
下面的示例用於創建多個URL參數:
Route:: get ( " /user/{id}/post/{post_id} " , function ( $ user_id , $ post_id )
{
return " User ID = $ user_id & Post ID = $ post_id " ;
});它具有兩個稱為id和post_id URL參數,用於用戶ID和POST ID,然後我們在閉合函數參數中獲取URL參數。與路由控制器方法相同的事情。
但是,請確保函數閉合參數變量不能與之相同,否則可能會導致衝突,但是URL參數可能相同。
phpslides中的配置使您在配置路由中可以發送/接收的方式可以完全訪問。可以在phpslides.config.json文件中設置路由配置。
默認情況下,網絡中的任何地方都將是空白的,即使它們瀏覽到任何頁面。因此,網絡路由將使用任何鏈接添加頁面,將頁面添加到網絡中,它將返回URL的頁面。如果Not Found page ,則每當頁面不存在時都可以使用。
默認情況下,如果他們打開頁面任何路徑的任何URL,除非添加Not Found page ,否則網絡將是空白的,因此它將返回它,因為使您的網站確保您只能訪問您希望他們訪問的零件。
phpslides中的配置使您可以輕鬆地配置用戶可以查看的零件,製作一個非常安全的網站。 .他們只能在公共文件夾中查看任何文件,但除了路由外,無法查看那裡的文件夾。
_示例phpslides中的配置
在項目的根目錄中打開phpslides.config.json 。
{
"charset" : " UTF-8 "
}上面的示例指定了用於將所有文件和路由頁面返回到眉毛中的炭框。但是,如果您希望更改某些零件,可以隨時使用PHP代碼更改它。
{
"public" : {
"/" : [ " * " ]
}
}我們在JSON文件中添加了一個public密鑰,該密鑰在public目錄中指定了可以訪問的文件夾中的文件和嵌套文件。
我們添加了指定public目錄的根的/鍵。因此,我們添加它具有* (星號) 。指定訪問public目錄根目錄中的所有文件。而且,即使存在文件,我們也可以指定它們可以訪問的任何類型的擴展名,並且他們嘗試訪問該擴展名在cconfiguration中不可用的文件,它將返回Not Found page 。他們可以在數組中編寫多個擴展。並且還可以編寫image ,從而可以訪問所有圖像, video或audio 。
"/" : [ " image " , " audio " , " video " ]在public目錄內的每個嵌套文件夾上,將指定為配置文件中的擴展名數組。而且,如果要允許所有嵌套文件夾,則只需在JSON文件中指定文件夾及其在所有嵌套目錄中允許的擴展名。
就像說目錄以這種格式一樣:
public:
assets:
image.jpg
file.pdf
vendor:
bootstrap.min.js
images:
image.png
image1.jpg
file.html
因此,該示例可以解釋:在public目錄中,我們有assets和images文件夾。因此,在assets文件夾中,我們有1個圖像,1個PDF文件和1個vendor文件夾,其中包含bootstrap.min.js 。因此,如果我們想配置它::
{
"public" : {
"assets" : [ " jpg " , " js " ],
"images" : [ " image " , " video " ]
}
}在此示例中,我們僅創建了assets和images目錄的配置,因此assets目錄中的所有文件和文件夾都將使用assets目錄中添加的擴展名,這些擴展名指定在此示例中,在vendor文件夾中也允許指定的js擴展名,或者我們將vendor鍵添加到JSON文件中。
因此,當我們配置assets目錄時,他們只能在vendor文件夾中訪問jpg文件和js文件。
對於images目錄,我們指定它只能訪問image或video的任何文件,因此它允許那裡的兩個文件是png & jpg ,並且每當試圖訪問file.html時都Not Found page 。
要查看public目錄中的所有文件,其中包含嵌套文件夾中的文件。您不會在獲取文件之前添加public文件夾,它將Not Found page 。因此,就像上面的示例一樣,要訪問assets文件夾中的文件。我們將遵循網址: http://localhost:8000/assets/image.jpg而不是http://localhost:8000/public/assets/image.jpg 。如果文件位於項目的根目錄中,則將在主機URL: http://localhost:8000/image.jpg之後直接訪問。
在此版本中,幻燈片在處理視圖頁面上為您的views目錄創建視圖模板文件,以此格式fileName + .view.php擴展。這是fileName.view.php
Phpslides創建了一些特殊的視圖語法。
<? ?>讓我們開始。
<! DOCTYPE html>
<html>
<!-- Php codes if needed -->
<?
?>
<head>
<!-- Meta Tags Info -->
<title>Page Title</title>
</head>
<body>
<!-- Body contents -->
</body>
</html>在我們編寫HTML代碼的查看模板頁面中,PHP標籤不應啟動文件,而是在<html>標籤中寫下PHP標籤和代碼,或其他任何位置以外的其他位置,都應始終使用<html>標籤啟動<?php文檔
<? ?>在視圖模板中的標籤是編寫簡短的PHP代碼中使用的短PHP標籤。喜歡使用if語句,或將數據呼應到HTML頁面。示例代碼:
<body>
<? if ( $ user ): ?>
<h1>Hello <? @view $ user ?> </h1>
<? else : ?>
<h1>Hello Guest</h1>
<? endif ; ?>
<p>
<? @view ' welcome to our blog spot! ' ?>
</p>
</body>該示例解釋為:在“主體元素”中,我們檢查用戶是否返回true,然後將帶有文本Hello的h1元素帶有用戶變量值,該值使用slides中的@view關鍵字返回。否則,它將返回和h1元素,帶有text hello guest在<p>標籤中的h1元素,我們編寫了php代碼,該代碼使用@view關鍵字將字符串/值返回到<p>元素。
:: view&:: root
::view只是在視圖模板文件中寫的一個單詞,該文件從 /從/開始返回了項目中的服務器名稱之後的根位置。通常用於鏈接公共文件。 ::root正在返回項目的根位置,並且沒有::view , ::root在PHP中使用,包括項目的任何文件,但是::view只能訪問瀏覽器/客戶端端可以訪問的內容,但在不在public目錄中時無法訪問項目中的任何文件。
現在,讓我們想像我們有將在“公共目錄”中訪問的圖像,並且需要在視圖頁面中包含的額外PHP文件。
<body>
<? include ' ::root/components/extraFile.php ' ?>
<div>
<img src="::view/assets/icon.png" alt="Icon" />
</div>
</body>在這種情況下,項目的根表示為::root ,並且在項目內部,我們創建了一個稱為components的文件夾和名為extraFile.php的新文件,用於在查看頁面中包含的任何PHP代碼。
::view是服務器主機的根位置,因此,讓我們想像主機URL為http://localhost:8000/因此,它表示為::view ,並且通常在幻燈片中, public目錄中的所有文件和::view/public夾均在url的根中延長為::view/
因此,URL為::view/assets/icon.png在public目錄中,創建了一個assets文件夾和icon.png圖像。
幻燈片為您提供了將另一個視圖模板文件包含到視圖頁面的方式,而不僅僅是PHP文件。
包括查看頁面的兩種方式
<include !/> html標籤slides_include php功能使用<include !/> html標籤,您可以將其他PHP/視圖頁麵包括到當前查看頁面。這使您可以在其他文件中寫入幻燈片視圖模板。並且還可以包括項目中任何地方的任何其他PHP文件。
< body >
< include path =" ::root/components/extraFile.php " ! />
< include path =" ::root/views/viewPage.view.php " ! />
</ body >因此,在第一個標籤中,我們包括一個位於components目錄的PHP文件。第二個標籤我們包括位於views目錄中的視圖模板文件。並且只能在視圖模板頁面中使用<include !/>標籤。
slide_include
此功能為您提供了一種將視圖文件包含在任何PHP文件中的方法,而不僅僅是在“查看模板”頁面上。
<? @view slides_include ( ' ::root/comp/extraFile.php ' ) ?>
<? @view slides_include ( ' ::root/views/page.view.php ' ) ?> phpslides在-v1.2.0中吸引了API,它允許您在項目中與API合作。 API就像路由一樣,但它將數據渲染回請求而不是瀏覽器。幻燈片提供Api功能,使您可以註冊API路由。並在web.php文件中設置API控制器。在routes/api.php文件中註冊您的新API路由
<?php
use PhpSlides Api ;
Api:: get ();
Api:: post ();
Api:: put ();
Api:: patch ();
Api:: update ();
Api:: delete ();
?>在上面的代碼塊中,我們創建API,而這些是API中可用的API請求方法。 Api函數僅採用2個參數,API路由URL,第二個參數是控制器類方法。
請注意,在創建API之前,請確保您在route.php文件中設置了Route::config()函數,即使您不使用Web路由。
讓我們使用POST方法為給定請求路由"/api/users"創建一個API,該方法將顯示數據庫中可用用戶的列表。並創建另一個路由"/api/users/{id}"也是一個帖子方法,該方法將通過給定ID顯示特定用戶。
<?php
use PhpSlides Api ;
Api:: post ( " /api/users " );
Api:: post ( " /api/users/{id} " , @user);
?>因此,在第一個API中,我們沒有提供第二個參數來使用該方法,該方法默認情況下是__invoke方法。在第二次,我們使用@user ,該@user聲明同一控制器類的user方法。 @ target控制器類的方法名稱。
讓我們首先在Controller/Api目錄中創建控制器類。讓我們命名UserController 。在我們的控制器名稱中,必須結束文件的Controller ,該文件描述了一個控制器文件。
<?php
namespace PhpSlides Controller ;
final class UserController extends Controller
{
function __invoke () {
$ response = [ ' data ' => ' We have gotten all users id successful ' ];
return json_encode ( $ response );
}
function user ( int $ id ) {
$ response = [ ' data ' => ' The particular user id = $id ' ];
return json_encode ( $ response );
}
}
?>在UserController類中,我們創建了兩種功能方法並重新編碼的JSON格式。
尚未完成..我們需要在src/web.php文件中為控制器類註冊每個API路由URL。
<?php
use PhpSlides Controller UserController ;
return [
' /api/users ' => UserController::class,
' /api/users/{id} ' => UserController::class
];
?>我們返回了寄存器API路線,現在已準備就緒API❤️?
當您喜歡使用phpslides時!
下一個版本將出現更多功能