bhaswanth53 / locus
Locus 框架。
Requires
- catfan/medoo: ^1.6
- mikecao/flight: ^1.3
- phpmailer/phpmailer: ^6.0
- rakit/validation: ^1.1
This package is not auto-updated.
Last update: 2024-10-01 01:26:09 UTC
README
Locus 是一个用于 PHP 的迷你框架。换句话说,我们可以将其视为一个项目结构而不是框架。因为 Locus 只是多个 PHP 包的组合。
Locus 框架的主要目标是结合前端预设与核心 PHP 开发。我们在该框架中使用了 Laravel Mix。默认情况下,Locus 带有 React 预设。但您可以根据需要创建任何预设。希望我们很快就能发布其他预设。
简介
安装
要使用此框架,您可以简单下载此存储库并将其解压到您的项目中。另一方面,如果您使用 git,可以使用以下命令进行克隆。
git clone https://github.com/bhaswanth53/locus.git
或者如果您使用 Composer,则可以按以下方式安装。
composer create-project bhaswanth53/locus
项目安装完成后,文件结构将如下所示。
Locus Framework
|
└───assets
│ │___css
| | |___style.css
│ │___images
| | |___logo.png
| |___js
| | |___index.js
│ |
└───Config
| │___Utilities.php
| │___Variables.php
| |
|___Controllers
| |___Controller.php
| |___IndexController.php
| |
|___Helpers
| |___DB.php
| |___File.php
| |___Mail.php
| |___Validation.php
| |
|___src
| |___components
| | |___HelloWorld.jsx
| |___index.js
| |
|___Storage
| |
|___views
| |___errors
| | |___404.php
| |___mails
| | |___mail.php
| |___welcome.php
| |
|___.babelrc
|___.htaccess
|___composer.json
|___composer.lock
|___index.php
|___package-lock.json
|___package.json
|___README.md
|___webpack.mix.js
要求
- PHP 7.0(或)以上
- Composer
- Node JS / NPM
包含的包
路由
我们在该框架中使用了 Flight PHP。因此,您可以在框架中使用 Flight 组件。对于路由,我们只使用了 Flight 路由器。您可以在 index.php 中定义路由。
Flight::route('GET /ROUTE_URL', function() { // Write your code here... });
默认情况下,Flight 不包含 MVC 结构。但在这个框架中,我们设法创建了类似 MVC 的结构来管理路由。
Flight::route('GET /ROUTE_URL', 'Controllers\\ControllerName::function');
默认情况下,我们定义了 flight 引擎。因此,您可以使用以下方式添加路由:
$app->route('GET /', 'Controllers\\ControllerName::function);
控制器
以下是一个控制器示例。
<?php namespace Controllers; class IndexController extends Controller { public function index() { echo "Welcome To Locus"; } }
默认情况下,flight 提供了 render 函数来加载视图文件。所有视图文件都存储在 views 文件夹中。我们可以在控制器中使用 flight render。要使用 flight 组件在控制器中,我们必须在控制器中使用以下方式使用 Flight。
<?php namespace Controllers; use Flight; class IndexController extends Controller { public function index() { Flight::render('welcome'); } }
动态路由
默认情况下,flight 支持动态路由。我们在 Locus 中也实现了该功能。我们可以定义动态路由如下。
index.php
$app->route('GET /url/@name/@age', 'Controllers\\IndexController::getvalues);
控制器
<?php namespace Controllers; use Flight; class IndexController extends Controller { public function getvalues($name, $age) { echo $name; echo "<br>"; echo $age; } }
助手
Locus 的主要目的是将前端预设与核心 PHP 开发合并。即便如此,我们仍添加了一些基本助手以简化工作。
邮件助手
我们使用 PHP Mailer 发送电子邮件。我们可以在控制器中使用 Mail 助手如下。
<?php namespace Controllers; use Helpers\Mail; class IndexController extends Controller { public function sendMail() { $mail = new Mail(); $mail->subject = "Second Test Mail"; $mail->body = "mail.php"; $mail->args = array( "name" => "Son Krillin San", "data" => "Second Test Mail Data" ); $mail->from = array( "email" => "SENDER_EMAIL", "name" => "SENDER_NAME" ); /* You can add any number of emails you want to send mail */ $mail->addAddress("RECEIVER1_EMAIL", "RECEIVER1_NAME"); $mail->addAddress("RECEIVER2_EMAIL", "RECEIVER2_NAME"); if($mail->send()) { echo "Mail has been sent"; } else { echo "Mail not sent"; } } }
您可以在 views 文件夹中的 mails 文件夹内创建新的 PHP 文件作为电子邮件模板,并定义模板名称如下。
$mail->body = "mail.php";
上述代码将从邮件文件夹中加载模板。
您可以在电子邮件模板中使用动态数据如下。
$mail->args = array( "name" => "Son Krillin San", "data" => "Second Test Mail Data" );
您可以在电子邮件模板中使用上述数据如下。
echo $args['name']; echo $args['data'];
数据库助手
我们使用 Medoo 数据库框架进行数据库操作。我们可以使用以下方式使用该助手。
<?php namespace Controllers; use Helpers\DB; class IndexController extends Controller { $con = DB::connect(); $con->insert('TABLE NAME', [ 'column1 name' => 'column1 value', 'column2 name' => "column2 value", 'column3 name' => "column3 value", 'column4 name' => 'column4 value' ]); echo "Database has been added"; }
我们只将数据库连接分配给一个字符串并使用默认的 Medoo 框架查询。有关更多详细信息,请参阅 文档。
验证助手
我们在该框架中使用了 Rakit/Validation。您可以使用验证助手如下。
<?php namespace Controllers; use Flight; use Helpers\Validation; class IndexController extends Controller { public function validate() { $request = Flight::request(); $validation = Validation::make($request, [ 'name' => 'required', 'age' => 'required' ]); if($validation !== true) { print_r($validation); // Print validation errors } else { //if validation passed } } }
文件助手
我们添加了一个文件助手用于文件上传。默认情况下,上传的文件将存储在 Storage 文件夹中。我们可以使用文件助手如下。
<?php namecpace Controllers; use Flight; use Helpers\File; class IndexController extends Controller { $request = Flight::request(); $file = new File($request->files['file_name']); $file->path = "uploads"; // file will be stored inside Storage/uploads/ $file->name = "new_upload1"; //new name for uploaded file if($file->upload()) { echo "File has been uploaded"; } else { echo "Not uploaded"; } }
配置
工具
我们可以使用asset()函数来加载资源。如下所示。
asset('css/style.css');
上面的代码会生成style.css的完整URL。asset()函数在assets文件夹内部被触发。
我们可以使用url()函数来生成根URL,如下所示。
url('login'); // will generate http://root-url/login url(); // will generate http://root-url
我们可以使用storage_path()函数来从存储中加载文件,如下所示。
storage_path('uploads/file.jpg'); // will generate http://root-url/Storage/uploads/file.jpg
您也可以创建自己的函数。Utilities.php文件位于Config文件夹内。
变量
在这里,我们可以定义全局变量。这些变量将使用constant()函数在任何文件中使用。您可以如下创建变量。Variables.php文件位于Config文件夹内。
define("VARIABLE_NAME", "VARIABLE_VALUE"); // This will be retrieved as follows constant("VARIABLE_NAME");
前端预设
默认情况下,Locus自带React预设。但您可以按需配置任何预设。我们也在开发其他预设。希望我们能很快发布更多预设。
要使用预设,请按照以下命令操作。
npm install /* Installs all the dependencies*/
npm run dev /* Run Webpack and make development build of the project*/
npm run watch /* Keep watching project for every small changes */
npm run prod /* Make development build*/