此包最新版本(dev-master)没有可用的许可证信息。

Locus 框架。

安装: 5

依赖: 0

建议者: 0

安全: 0

星星: 2

关注者: 3

分支: 0

开放性问题: 5

语言:JavaScript

类型:项目

dev-master 2019-04-26 15:25 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*/