某行 / 某行启动器应用
Laravel 框架。
Requires
- php: >=5.6.4
- dingo/api: 1.0.x@dev
- rap2hpoutre/laravel-log-viewer: ^0.7.0
- someline/starter-framework: 1.3.*
Requires (Dev)
- fzaninotto/faker: ~1.4
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~5.0
- symfony/css-selector: 3.1.*
- symfony/dom-crawler: 3.1.*
This package is auto-updated.
Last update: 2024-09-09 03:50:43 UTC
README
某行启动器是一个用于快速构建Web应用和Restful API的PHP框架,它基于现代设计模式基础。
它基于流行的Laravel 5框架
、Vue.js
、Restful API
、仓库设计
、OAuth2
、JWT
、单元测试
、前端和后端分层独立。
某行启动器诞生有两个原因
-
无需从零开始使用Laravel即可快速构建应用或Restful API启动器。
-
引入现代设计模式,为PHP项目提供一个更好的起点。
实际操作
某行启动器演示
使用Vue.js构建的前端,并通过Restful API显示数据
密码: Abc12345
观看视频
观看下面的视频教程。
YouTube: https://youtu.be/6_lxJNX0Qe0
框架概述
某行启动器适合面向Restful API的项目。
作为后端层的Restful API为前端提供简单的统一接口:Web和移动应用。
它使用Laravel Passport进行受保护资源的认证。
它还提供了API测试和框架测试的单元测试。
它配备了Angulr主题,并提供易于参考的每个部分的功能。
它充分利用了仓库设计模式。
开箱即用组件
如果你不熟悉这些包中的任何一个,建议你了解它们,因为当需要时它们非常有用。
框架
- Laravel 5.3 laravel/framework
- Laravel IDE Helper barryvdh/laravel-ide-helper
- Clockwork itsgoingd/clockwork
- Laravel 5日志查看器 rap2hpoutre/laravel-log-viewer
基础
- Redis predis/predis
- GuzzleHTTP guzzlehttp/guzzle
- HTTP状态 lukasoppermann/http-status
核心
- Restful API dingo/api
- L5 仓库 prettus/l5-repository
- Fractal thephpleague/fractal
- Laravel 验证 prettus/laravel-validation
- Intervention Image intervention/image
- Intervention Image Cache intervention/imagecache
- Image Validator cviebrock/image-validator
- Rest API 客户端 someline/rest-api-client
- 某行图像服务 someline/someline-image
身份验证
- Laravel Passport laravel/passport
主题
前端
- Vue.js用于现代Web界面的响应式组件
开始使用
请确保您已经安装了PHP 7.0和composer。
您可以通过选项A或B开始
A. 通过composer开始
在工作目录下,运行以下命令
composer create-project --prefer-dist someline/someline-starter-app someline-starter-app
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-app
B.1. 添加到git仓库 (当需要时)
将https://github.com/username/repository-name.git
更改为您自己的git仓库地址。
cd someline-starter-app
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
安装
开发需求
- PHP: >=7.0
- MySQL: >=5.7
- SQLite扩展
- Laravel 5: https://laravel.net.cn/docs/5.3/installation
- NodeJS: https://node.org.cn/
- Bower: https://bower.io/
安装基本组件
打开someline-starter
文件夹 (可选,只在不在项目根目录时运行)
cd someline-starter-app
所有这些命令都应该在someline-starter项目的根目录下执行
安装composer依赖
composer install
安装npm依赖
npm install
安装bower依赖
bower install
设置Laravel,在这些命令之后,请更改.env
文件以进行您的环境设置
sudo cp .env.example .env
sudo chmod -R 777 storage
sudo chmod -R 777 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
准备就绪
到此为止,您应该能够访问主页。
例如,如果您已设置域名:http://someline-starter.app/
。
只需访问:http://someline-starter.app/
系统将提示您登录,请使用
libern@someline.com
Abc12345
您可以从文件database/seeds/UsersTableSeeder.php
中更改填充账户信息
您完成了!是的!
探索并开始在此基础上构建。
开发过程与流程
必备知识
在您开始构建之前,您需要了解、阅读和理解以下内容。
我们推荐使用PHPStorm IDE来构建和开发您的项目。
命名空间
app/
文件夹的默认命名空间是Someline
。
如果您不熟悉Someline Starter的命名空间,不建议更改命名空间,因为Someline
命名空间在整个项目中被大量使用。
然而,如果您知道自己在做什么,您仍然可以更改它,因为某些命名空间需要手动更改。
要更改命名空间到您喜欢的
php artisan app:namespace YourApp
基类
为了充分利用Someline Starter提供的所有功能,您应该从BaseClass(如果存在的话)扩展类,例如BasePresenter
、BaseController
等。
模型
所有模型都位于app/Models/
文件夹下。
位于app/Models/Foundation/
文件夹下的User
模型默认创建,主键为user_id
,您不应过度修改此类,因为它在整个项目中几乎到处都在使用。您可以使用全局函数auth_user()
来访问当前登录用户。
每个模型都应该扩展Someline/Models/BaseModel
,它有一个观察者Someline/Observers/BaseModelObserver
,您可以利用模型中的所有模型事件,例如onCreating
、onCreated
、onUpdating
、onDeleting
等。
在创建新模型时,您应该使用命令来自动生成相关的仓库类。
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/
资源
Angulr样式和脚本:resources/assets/angulr/
Angulr与Blade视图:resources/views/angulr/
Vuejs:resources/assets/js/
Less样式:resources/assets/less/app.less
Sass样式:resources/assets/sass/app.scss
在更改脚本和样式后,您需要运行命令。
在开发中,运行
npm run-script dev
在生产中,运行
npm run-script prod
当您更改主题文件时,运行
npm run-script theme
API和单元测试
注意
您可能需要更改dev
环境中local
服务配置下的config/rest-client.php
,以适应您的本地开发配置。
同时更改.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.app/console/oauth
Web日志查看器
日志查看器HTTP URL:http://someline-starter.app/console/logs
数据库
我们建议使用迁移来管理数据库结构和数据填充。
直接更改数据库或不遵循迁移是强烈不推荐的。
创建数据库迁移的流程
-
创建迁移文件(当使用
php artisan starter:entity
时自动生成),在文件夹database/migrations/
下。 -
向迁移文件添加必要列(当使用
php artisan starter:entity
时自动生成)。
您建议使用tablename_id
格式作为主键自增键,例如,对于表posts
,您需要使用post_id
,并且当它成为外键时,您应该在其他表中保持相同的名称post_id
。
$table->increments('post_id');
您还建议在所有表中使用user_id
字段,例如,在company_staffs
表中用user_id
代替staff_id
作为员工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();
-
在文件
database/factories/ModelFactory.php
下添加工厂支持。 -
在文件夹
database/seeds/
下创建播种支持。
刷新数据库迁移和播种。
当您添加或更改迁移或播种文件,或者您只是简单地想刷新数据库中的所有内容时。
php artisan migrate:refresh --seed
许可
Someline Starter 框架是开源软件,许可协议为MIT许可。