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时!
下一个版本将出现更多功能