someline/someline-starter

Someline Starter 是一个基于现代设计模式基础的 PHP 框架,用于快速构建 Web 应用和 Restful API。

安装次数: 2 169

依赖者: 0

建议者: 0

安全: 0

星标: 838

关注者: 55

分支: 170

开放问题: 18

类型:项目


README

Someline Inc 测试并用于生产。

Latest Version on Packagist Software License

Someline Starter 是一个用于快速构建 Web 应用和 Restful API 的 PHP 框架,具有现代设计模式基础。

它是基于流行的 Laravel 5.8 框架Vue.js 2.6Restful APIRepository DesignOAuth2JWT单元测试、前后端分离。

Someline Starter 出现了三个原因

  1. 无需从头开始使用 Laravel,即可快速启动 Web 应用。

  2. 使用 Restful API 实现前后端分离。

  3. 引入现代设计模式,为 PHP 项目提供一个更好的基础。

实际应用

Someline Starter 演示

使用 Vue.js 开发的前端,通过 Restful API 显示数据

电子邮件: libern@someline.com

密码: Abc12345

观看视频

请观看下面的视频教程。

YouTube: https://youtu.be/6_lxJNX0Qe0

框架概述

Someline Starter 适用于以 Restful API 为主的项目。

Restful API 作为后端层,为前端(Web 和移动应用)提供简单统一的接口。

它利用 Laravel Passport 进行受保护资源的认证。

它还提供了 API 测试和框架测试的单元测试。

它包含 Angulr 主题,您可以在各个部分轻松引用其功能。

它充分利用了 Repository 设计模式。

开箱即用组件

如果您不熟悉这些包中的任何一个,建议您了解它们,因为它们在需要时非常有用。

框架

基础

核心

身份验证

主题

  • 支持Bootstrap和jQuery的Angulr主题。演示:[Angular版本](http://flatfull.com/themes/angulr/angular/#/app/dashboard-v1) 和 [HTML版本](http://flatfull.com/themes/angulr/html/)。

    如果您在项目中使用此主题,请购买许可证

前端

  • Vue.js 用于现代网络界面的响应式组件

入门指南

请确保您已经安装了PHP 7.1和composer

您可以选择以下任一选项开始

A. 通过composer开始

在工作文件夹下运行以下命令

composer create-project --prefer-dist someline/someline-starter someline-starter

A.1. 添加到git仓库 (如有需要)

https://github.com/username/repository-name.git 改为您自己的git仓库地址。

cd someline-starter

git init
git add .
git commit -m 'Initial commit'

git remote add origin https://github.com/username/repository-name.git
git push -u origin master

B. 通过克隆仓库开始

将此项目克隆到您的工作文件夹,并打开该目录

git clone https://github.com/someline/someline-starter

B.1. 添加到git仓库 (如有需要)

https://github.com/username/repository-name.git 改为您自己的git仓库地址。

cd someline-starter
rm -rf .git

git init
git add .
git commit -m 'Initial commit'

git remote add origin https://github.com/username/repository-name.git
git push -u origin master

安装

开发要求

安装基本工具

打开 someline-starter 文件夹 (可选,仅在您不在项目根目录下时运行)

cd someline-starter

所有这些命令应在someline-starter项目的根目录下执行

安装composer依赖项

composer install

使用Yarn依赖管理器安装npm依赖项(推荐)

注意:此命令应homestead环境中执行。如果您愿意,仍然可以使用npm install

yarn install

安装bower依赖项

bower install

设置Laravel,在这些命令之后,请修改.env文件以设置您自己的环境设置

sudo cp .env.example .env
sudo chmod -R 777 storage bootstrap/cache
php artisan key:generate

数据库 & 种子数据

您需要创建一个数据库,例如 someline_starter,编码为 utf8mb4,排序规则为 utf8mb4_unicode_ci

MySQL查询

CREATE DATABASE `someline_starter` DEFAULT CHARACTER SET = `utf8mb4` DEFAULT COLLATE = `utf8mb4_unicode_ci`;

.env文件中更改数据库配置以匹配您刚刚创建的数据库。

在设置数据库配置后,您现在可以进行迁移和种子数据。

php artisan migrate

php artisan db:seed

安装Laravel Passport并使用加密密钥生成安全访问令牌。

php artisan passport:install

当在服务器上部署时

sudo chown www-data:www-data storage/oauth-*.key
sudo chmod 600 storage/oauth-*.key

准备就绪

到此为止,您应该能够访问主页。

例如,如果您已设置域名:http://someline-starter.sl/

只需访问:http://someline-starter.sl/

它将提示您登录,请使用

libern@someline.com
Abc12345

您可以从文件database/seeds/UsersTableSeeder.php更改种子账户信息

完成了!是的!

探索并开始构建。

开发过程和流程

必备知识

在开始构建之前,您需要了解、阅读和理解以下内容。

我们建议使用PHPStorm IDE来构建和开发您的项目。

命名空间

app/文件夹的默认命名空间是Someline

如果您不熟悉Someline Starter的命名空间,不建议更改命名空间,因为Someline命名空间在整个项目中使用频率很高。

但是,如果您知道自己在做什么,仍然可以更改它,因为某些命名空间需要手动更改。

要将命名空间更改为您喜欢的

php artisan app:namespace YourApp

基类

为了充分利用Someline Starter提供的功能,您应该从基类扩展类(如果有),例如BasePresenterBaseController等。

模型

所有模型都位于app/Models/文件夹下。

app/Models/Foundation/文件夹下的User模型默认创建,主键为user_id,您不应该大量更改此类,因为它在整个项目中几乎无处不在。您可以使用全局函数auth_user()来访问当前登录用户。

每个模型都应该扩展Someline/Models/BaseModel,它有一个观察者Someline/Observers/BaseModelObserver,您可以利用模型中的所有模型事件,例如onCreatingonCreatedonUpdatingonDeleting等。

创建新模型时,您应该使用命令来自动生成相关的仓库类。

php artisan starter:entity Post

Web Http

所有Web相关文件都位于app/Http/文件夹下。

Web路由定义在文件routes/web.php

Web控制器定义在文件夹app/Http/Controllers/

Restful API

所有API相关文件都位于app/Api/文件夹下。

API路由定义在文件routes/api.php

API控制器定义在文件夹app/Api/Controllers/

在创建API之前,您需要测试它们才能使用。您应该使用提供的单元测试或创建新的单元测试来测试所有API。不建议使用浏览器或Postman等进行测试。

仓库模式

所有仓库相关文件都位于app/下,具体类型作为父文件夹。

仓库:app/Repositories/

仓库Eloquent:app/Repositories/Eloquent/

仓库接口:app/Repositories/Interfaces/

仓库标准:app/Repositories/Criteria/

展示者:app/Presenters/

转换器:app/Transformers/

验证器:app/Validators/

资源

Angular样式和脚本:resources/assets/angulr/

Angular与Blade视图:resources/views/angulr/

Vuejs:resources/assets/js/

Less样式:resources/assets/less/app.less

Sass样式:resources/assets/sass/app.scss

在脚本或样式中进行更改时,您需要运行命令。

在开发中运行

yarn run dev

在开发和监视资源更改时运行

yarn run watch

在生产中运行

yarn run production

更改主题文件后运行

yarn run theme

API和单元测试

注意

您可能需要从dev环境中的config/rest-client.php更改local服务配置,以适应您的本地开发配置。

同时更改.env文件中的API_TEST_CLIENT_SECRET值,将其更改为oauth_clients表中的Password Grant Client记录的secret值。

单元测试:tests/

API单元测试:tests/Api/

调试和Clockwork

查看文件storage/clockwork.sqlite中的所有请求和请求信息

OAuth Web支持

OAuth HTTP URL:http://someline-starter.sl/console/oauth

Web日志查看器

日志查看器HTTP URL:http://someline-starter.sl/console/logs

数据库

我们建议使用迁移来创建数据库结构和填充。

直接更改数据库或未遵循迁移是强烈不建议的。

创建数据库迁移的流程
  1. 在文件夹database/migrations/下创建迁移文件(使用php artisan starter:entity时自动生成)

  2. 在迁移文件中添加必要的列(使用php artisan starter:entity时自动生成)

建议您使用tablename_id格式作为主递增键,例如,对于posts表,您需要使用post_id,当它成为外键时,应在其他表post_id中保持相同的名称。

$table->increments('post_id');

还建议您在所有表中使用user_id字段,例如,在company_staffs表中使用user_id作为员工ID,而不是staff_id。如果某些表中没有user_id的含义,您仍然应该放置user_id字段以备将来使用。因此,您需要根据表的场景智能地使用它。类似地,您可能希望根据您的需要可选地添加一个related_user_id字段来指示某些记录与用户相关。

以下列始终由BaseModel需要

$table->unsignedInteger('user_id')->index();

$table->unsignedInteger('created_by')->nullable();
$table->timestamp('created_at')->nullable();
$table->ipAddress('created_ip')->nullable();
$table->unsignedInteger('updated_by')->nullable();
$table->timestamp('updated_at')->nullable();
$table->ipAddress('updated_ip')->nullable();

并删除timestamps()

// $table->timestamps();

最后,表的蓝图应如下所示,例如在posts表中

$table->increments('post_id');
$table->unsignedInteger('user_id')->index();

// Adding more table related fields here...

$table->unsignedInteger('created_by')->nullable();
$table->timestamp('created_at')->nullable();
$table->ipAddress('created_ip')->nullable();
$table->unsignedInteger('updated_by')->nullable();
$table->timestamp('updated_at')->nullable();
$table->ipAddress('updated_ip')->nullable();
  1. 添加工厂支持,在文件database/factories/ModelFactory.php

  2. 创建种子支持,在文件夹database/seeds/

刷新数据库迁移和种子

当您添加或更改迁移或种子文件时,或者您只是简单地想要刷新数据库中的所有内容时

php artisan migrate:refresh --seed

许可证

Someline Starter 框架是开源软件,受MIT许可证许可。