澳门新浦京娱乐游戏学习笔记:《Laravel5.3》

2011年,Taylor
Otwell将Laravel作为一种包含全新现代方法的框架介绍给大家。Laravel最初的设计是为了面向MVC架构的,它可以满足如事件处理、用户身份验证等各种需求。另外它还有一个由管理数据库强力支持,用于管理模块化和可扩展性代码的软件包管理器。

数据库相关

Query Builder:Laravel 提供的一套数据库操作方法,基于 DB 这个 Facade
静态类,这里有详细的关于这个方法的接口说明:
https://laravel.com/api/5.3/Illuminate/Database/Query/Builder.html

Migrations:等到项目的业务逻辑到达一定的规模,会有 Migrations
方面的需求,在 Laravel 中体现为 Schema 这个 Facade 静态类

Eloquent ORM:Laravel 提供的一套 ActiveRecord
实现,有一些很有趣的机制:

Collections:提供了一整套强大的方法帮助检索返回数据的处理,很多的有用方法都支持
Lamda 表达式作为参数,非常有效的提升了代码的可读性。

Accessors & Mutators:在 get 和 set
数据的时候分别加上了一层回调处理,对业务逻辑的分离非常有帮助。

Date Mutators:实现一个 Carbon 的实例:
https://github.com/briannesbitt/Carbon
将类属性 $dates 中设定的相关字段自动转换成一个 Carbon
对象,可以调用所有 Carbon 中的相关方法。

Attribute Casting:使用类属性 $casts 可以方便得对 get
到的字段数据进行属性设定,可以进行一层类型转换,可以设置的值有:integer,
real, float, double, string, boolean, object, array, collection, date,
datetime, timestamp

Serialization:帮助查询数据在格式处理时候的两个方法 toArray() 和
toJson(),两个协调相应字段显示与否的类属性 $hidden 和
$visible,以及额外增加显示信息的 $appends 类属性

pivot:在处理 ManyToMany
关系的时候,对于中间表专门提供的一个属性和方法协助方便处理

Mass Assignment:提供了防止字段被错误插入数据的两个属性 $fillable
和 $guarded

在插入数据的时候 firstOrCreate(), firstOrNew()
在提供一些列的查询条件后没有任何匹配结果,则直接进行插入

findOrFail(), firstOrFail() 如果查询没有任何的结果,就抛出一个
ModelNotFoundException

除了 One To One、One To Many、Many To Many 以外,laravel还提供了 Has
Many Through(远层一对多关联:跨一个表进行一对多关联)、Polymorphic
Relations(多态关联:某个字段多态关联不同的外表)、Many To Many
Polymorphic Relations(多态的多对多关联)

Eager Loading:关联查询的时候提高效率的机制,使用 with()
方法实现,传 Lamda 表达式的方法也是很赞:
$users = AppUser::with(['posts' => function ($query) { $query->where('title', 'like', '%first%'); }])->get();

Soft Deleting:Laravel 提供了整套的 Soft Deleting
解决方案,当然你不希望一个数据真正的从数据库删除的时候

Query Scopes:查询作用域,将某些查询的条件绑定到某个 Model
上,比如 Soft Deleting 的时候,或者丢弃历史数据的时候,Query Scopes
就非常能帮得上

chunk:当 crontab 操作的时候遇到30秒时间限制的时候,就可以用
Laravel 提供的这个 chunk() 方法来解决:
http://laraveldaily.com/process-big-db-table-with-chunk-method/

aggregate methods:count, max, min, avg, and
sum,对查询结构数据进行操作的简单方法

Seeding:一套伪造测试数据的方法,做单元测试之类的时候,会非常的有用

  • 缓存可选

  • 认证包

  • 舒适的构建

  • URL 路由

  • 模块化的 ORM

  • 新版已经全面面对对象,可用 Composer 安装,一键安装

  • 支持多应用

任务自动化

Elixir是一个可让我们使用Gulp定义任务的Laravel程序接口,我们可以使用Elixir定义可精简CSS
和JavaScript的预处理器。

elixir(function(mix) { 
   mix.browserify('main.js');
 });

使用备忘(细节)

Cookie:

Cookie::queue('userId', 3, 1440);
echo Cookie::get('userId');

PHP 版本需要 5.5.9 以上

分页

在Laravel中分页是非常容易的因为它能够根据用户的浏览器当前页面生成一系列链接。

<?php 
namespace App/Http/Controllers; 
use DB; 
use App/Http/Controllers/Controller; 
class UserController extends Controller { 
  public function index() { 
    $users = DB::table('users')->paginate(15);
    return view('user.index', ['users' => $users]);
  }
}

一些零碎知识

Event Broadcasting
Laravel 提供了很详细的通讯解决方案,支持 Pusher、Redis、Socket.IO、Log
等等的驱动方案,提供了一个叫做 Laravel Echo 的 Javascript
工具包在前端部分进行支持,这块文档详细的提供了一个示例,等用到的时候可以参考

Cache
提供了一个 Cache 静态类操作缓存,支持 Memcached、Redis、文件、数据库缓存

Events & Listeners
这个应该是来源于 Symfony
的一套程序监听机制,但是感觉在大型系统中这样的方式会把业务逻辑搞的比较混乱,所以一直没有大规模使用过,但是前面
Event Broadcasting
的文档中强调了其重要性,可能在通讯解决方案中这样的监听机制是需要的,具体在使用的时候去理解

文件系统使用的 Flysystem,Storage
这个静态类封装了文件管理的全部功能,远程(亚马逊A3、Rackspace等)、本地等等,各种文件相关的操作需求应有尽有

邮件机制使用的是 SwiftMailer,SwiftMailer 本身是对 SMTP, Mailgun,
SparkPost, Amazon SES, PHP’s mail function, sendmail 等的封装,出自
SensioLabs,所以品质有保障

Notifications
消息机制是指给用户发提醒邮件、SMS信息、Slack、网页上的提醒信息等等,使用的
Notification 静态类进行了所有相关功能的封装

Queues
队列机制 Laravel 也提供了详细的支持,包括 Beanstalkd, Amazon SQS, Redis,
本地数据库等等

这些零碎的知识,都是对一些较小应用场景的功能封装,对于这样的封装,最怕的就是不完善然后用户会跳过封装直接用相关的接口,维护起来也比较困难,所以无论过去封装成
PHP 组件,或者是成为某些框架的插件,都很难取得成功,更别提像 Laravel
这样包含在框架的核心代码里面,Laravel 能这么做,我想有一个原因是
composer 的出现让代码更高效的复用成为一种可能,即时是 Laravel
的核心库,也可以方便的和别的项目共享

PHP 版本需要 5.4 以上

对象关系化映射(ORM)

Laravel包含一个处理数据库的层,它的对象关系化映射被称为Eloquent。另外这个也适用于PostgreSQL。

$users = User::where('votes', '>', 100)->take(10)->get();
foreach ($users as $user) { 
  var_dump($user->name);
}
  1. 先安装好
    Composer
  2. 全局安装 laravel/installer,一个 laravel 的安装工具
    composer global require "laravel/installer"
  3. 初始一个 laravel 的项目,然后就可以开始运行了
    $HOME/.composer/vendor/bin new project_name
  4. 建立 .env 文件
    cp .env.example .env
  5. 设置 APP_KEY
    ./artisan key:generate
  6. 设置权限(正式环境不要这么操作)
    chmod -R 777 .

一个强大且易于使用的 PHP 微框架,旨在快速帮助构建动态和强大的 Web
应用程序。

Laravel以其简洁、优雅的特性赢得了大家的广泛关注,无论是专家还是新手,在开发PHP项目的时候,都会第一时间的想到Laravel。本文我们将讨论为什么Laravel会成为最成功的PHP框架。

安装:

PHP 版本需要 5.5.9 以上

待办事项清单

Laravel提供在后台使用待办事项清单(to do
list)处理复杂、漫长流程的选择。它可以让我们异步处理某些流程而不需要用户的持续导航。

Queue :: push ( new  SendEmail ( $ message ));

框架核心结构

Service Container:
管理依赖注入(dependency
injection)的容器工具,《唠唠依赖注入》
《唠唠Service Container》
两篇文章里面解释的比较清晰。

Service Providers:
包含了 Service Container、事件监听(event
listeners)、中间件(middleware)、路由(routes)的整套实现机制的类。
// Laravel Framework Service Providers... IlluminateAuthAuthServiceProvider::class, IlluminateBroadcastingBroadcastServiceProvider::class, IlluminateBusBusServiceProvider::class, IlluminateCacheCacheServiceProvider::class, IlluminateFoundationProvidersConsoleSupportServiceProvider::class, IlluminateCookieCookieServiceProvider::class, IlluminateDatabaseDatabaseServiceProvider::class, IlluminateEncryptionEncryptionServiceProvider::class, IlluminateFilesystemFilesystemServiceProvider::class, IlluminateFoundationProvidersFoundationServiceProvider::class, IlluminateHashingHashServiceProvider::class, IlluminateMailMailServiceProvider::class, IlluminatePaginationPaginationServiceProvider::class, IlluminatePipelinePipelineServiceProvider::class, IlluminateQueueQueueServiceProvider::class, IlluminateRedisRedisServiceProvider::class, IlluminateAuthPasswordsPasswordResetServiceProvider::class, IlluminateSessionSessionServiceProvider::class, IlluminateTranslationTranslationServiceProvider::class, IlluminateValidationValidationServiceProvider::class, IlluminateViewViewServiceProvider::class, // Application Service Providers... AppProvidersAppServiceProvider::class, AppProvidersAuthServiceProvider::class, AppProvidersEventServiceProvider::class, AppProvidersRouteServiceProvider::class,

领先的 PHP 框架,创建网站和 Web
应用程序。同时,它还包含了很多工具和类用以缩短开发复杂的网络应用的时间。

澳门新浦京娱乐游戏 1

HTTP层:

Routing
Laravel 非常尊重 CRUD,所以可以在表单里面添加:
<input type="hidden" name="_method" value="PUT">

路由中传递的 id 值可以根据名字直接返回带有了数据字段的
model(感觉这个有点太过于智能了):
Route::get('api/users/{user}', function (AppUser $user) { return $user->email; });

Laravel 5.2 开始取消了 Route::controller()
这个方法,不能再方便得使用:

Route::controller(‘user’, ‘UserController’);

官方文档中的解释是:

The following features are deprecated in 5.2 and will be removed in
the 5.3 release in June 2016:
Implicit controller routes using Route::controller
have been deprecated. Please use explicit route registration in your
routes file. This will likely be extracted into a package.

可能是为了让路由的定义更加的清晰化

Middleware
类似于 Symfony 的 FIlter,属于一个请求从 HTTP 层 进入到 APP 层,以及从
APP 层出去到 HTTP 层过程中可以添加处理的部分。

CSRF Protection
在表单中添加:
{{ csrf_field() }}
或者
<input type="hidden" name="_token" value="{{ csrf_token() }}">
然后 VerifyCsrfToken 这个中间件便会自动处理 CSRF,对于 AJAX
请求的保护,则可以在 meta 中插入:
<meta name="csrf-token" content="{{ csrf_token() }}">
再配合一段 JS 的程序来自动实现:
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });

Controllers
如果路由中没有指定某个具体的 Controller 方法,则指向一下叫做
__envoke() 的方法:
public function __invoke($id) { return view('user.profile', ['user' => User::findOrFail($id)]); }

中间件经常在 Controller 的构造方法中被指定:
public function __construct() { $this->middleware('auth'); $this->middleware('log')->only('index'); $this->middleware('subscribed')->except('store'); }

Controller 中有一套封装好的 CRUD,叫做 Resource
Routes,感觉比较重,不大敢用。

Controller 方法的第一个参数支持 Service
Container,还是蛮有意思的,构造函数 __construct()
的第一个参数也支持,使用 Service Container 的方式是利用的 PHP
最新版本的新语法,在实践中看看会出现怎么样的运用机会,这种运用反射机制和
type-hint 结合而出现的使用方式,真的是丧心病狂……

Requests & Responses
Laravel 的 Requests & Responses 遵循着 PSR-7 standard
的标准,对上传和下载也做了相应的封装,东西比较多,这个具体使用的时候查文档

Validation
有一个叫做 bail 的参数可以帮助只返回首个验证不通过的信息:
$this->validate($request, [ 'title' => 'bail|required|unique:posts|max:255', 'body' => 'required', ]);

Zend Framework 是一系列专业的 PHP 软件包,安装量超过 1.58
亿。它可用于使用 PHP 5.6开发 Web
应用程序和服务,并使用广泛的语言特性提供 100% 面向对象的代码。

Laravel是一个有着美好前景的年轻框架,它的社区充满着活力,相关的文档和教程完整而清晰,并为快速、安全地开发现代应用程序提供了必要的功能。在近几年对PHP框架流行度的统计中,Laravel始终遥遥领先。那么是什么让Laravel成为最成功的PHP框架?

涉及前端部分

Laravel 结合使用了 Bootstrap 和 Vue 作为前端解决方案,然后提供了一个叫做
Laravel Elixir 的工具来进行前端 JS 和 CSS 的编译,同时这个编译过程支持
Less、Sass、Stylus、Plain CSS 这些 CSS 的同时编译,也支持
Webpack、Rollup、JavaScript 的结合编译。Laravel Elixir 本身是对 Gulp
的封装,而 Gulp 是基于 node.js 他们家的
npm,所以这个解决方案的安装过程也是丧心病狂,一路上
node.js、npm、Gulp、Laravel Elixir
安装完,等到真正使用的时候不知道还会遇到多少问题,成本啊!

因为 Laravel Elixir 基于 Gulp,所以在编译的时候可以直接用 Gulp
的命令行工具:
gulp // 编译命令 gulp watch // 只要 CSS 或者 JS 文件修改过了,就会自动编译

余下的就是看 Bootstrap 和 Vue 的文档了

Slim

事件处理

应用程序中事件的定义、记录和聆听都非常迅速。EventServiceProvider事件中的listen包含记录在你应用程序上所有事件的列表。

protected $listen = [
  'App/Events/PodcastWasPurchased' => [ 
     'App/Listeners/EmailPurchaseConfirmation',
  ],
];

Laravel 是“小丑鱼”项目技术团队共同确定下来的 PHP
程序框架,其近几年的发展异常迅猛,已经盖过了 YII 和 Symfony
的风头。Laravel 的发起人 Taylor Otwell 在 Blog 中说自己的偶像是 Symfony
的创始人 Fabien Potencier:《PHP Developers Who Have Inspired
Me》

Phalcon 为开发人员提供数据存储工具,例如其自己的 SQL 方言:PHQL,以及
MongoDB
的对象文档映射。其他功能包括模板引擎,表单构建器,易于构建具有国际语言支持的应用程序等等。Phalcon
是构建性能 REST API 以及完整的 Web 应用程序的理想选择。

单元测试

单元测试的开发是一个耗费大量时间的任务,但是它却是保证我们的应用程序保持正常工作的关键。Laravel中可使用PHPUnit执行单元测试。

<php 
use Illuminate/Foundation/Testing/WithoutMiddleware; 
use Illuminate/Foundation/Testing/DatabaseTransactions; 
class ExampleTest extends TestCase { 
  public function testBasicExample() { 
    $this->visit('/')->see('Laravel 5')->dontSee('Rails');
  }
}

涉及安全部分

Laravel 提供了一个 Auth 静态类存放权限安全相关的代码,提供了 Gate
静态类处理认证相关的内容

Authentication
Laravel 对 Authentication 做了全局统筹,不仅仅注册好了路由,而且运行 php
artisan make:auth 可以看到一个脚手架搭建好的小系统,方便学习:
// Authentication Routes... $this->get('login', 'AuthAuthController@showLoginForm'); $this->post('login', 'AuthAuthController@login'); $this->get('logout', 'AuthAuthController@logout'); // Registration Routes... $this->get('register', 'AuthAuthController@showRegistrationForm'); $this->post('register', 'AuthAuthController@register'); // Password Reset Routes... $this->get('password/reset/{token?}', 'AuthPasswordController@showResetForm'); $this->post('password/email', 'AuthPasswordController@sendResetLinkEmail'); $this->post('password/reset', 'AuthPasswordController@reset');

在数据安全方面,Laravel 提供了一套称为 Policy 的解决机制,Policy
机制可以在 Methods、Models、Filters、Authorizing
Actions、Middleware、Controller Helpers、Blade Templates中进行使用

文档中提到了涉及 Vue 的一套 API Authentication 解决方案,因为对 Vue
还不够了解,这块先放过,等学会了 Vue 以后再回过头来看这块的内容

Laravel 提供了一个 encrypt helper 协助加密保护,使用 OpenSSL 和
AES-256-CBC cipher,反正都封装好了,只要用就是了

Laravel 提供了一个 Hash 静态类产生和匹配用户密码,也是封装好了,用就可以

  • 不像 Laravel 和其他框架一样容易构建 Restful APIS

身份验证

安全是至关重要的。Laravel自带对本地用户的身份验证,并可以使用“remember”
选项来记住用户。它还可以让你例如一些额外参数,例如显示是否为活跃的用户。

if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1 ], $remember)) { 
   // The user is being remembered... 
}

目录结构

这里解释的非常清楚:https://laravel-china.org/docs/5.4/structure

在 Laravel
的开发过程中会用到许多不同类型的包管理工具,新生成很多的文件,这里简单说明一下:

composer.json 是 composer 的配置文件
/vendor 目录存放被 composer 安装的文件

package.json 是 nodejs 的配置文件
/node_modules 目录存放被 npm 安装的文件

bower.json 是 bower 的配置文件
.bowerrc 文件中设置了被 bower 安装的文件,一般设置为
/resources/assets/bower

gulpfile.js 是 gulp 的配置文件

以下排名不分前后

缓存

你的应用程序可得到一个健壮的缓存系统,通过对其进行调整,可以让应用程序的加载更加快速,这可以给你的用户提供最好的使用体验。

Cache::extend('mongo', function($app) { 
   return Cache::repository(new MongoStore);
});

附件

Facades:一套静态类的基类接口,提供了 Laravel
整套的静态类标准解决方案,便于静态类全局使用
'App' => IlluminateSupportFacadesApp::class, 'Artisan' => IlluminateSupportFacadesArtisan::class, 'Auth' => IlluminateSupportFacadesAuth::class, 'Blade' => IlluminateSupportFacadesBlade::class, 'Cache' => IlluminateSupportFacadesCache::class, 'Config' => IlluminateSupportFacadesConfig::class, 'Cookie' => IlluminateSupportFacadesCookie::class, 'Crypt' => IlluminateSupportFacadesCrypt::class, 'DB' => IlluminateSupportFacadesDB::class, 'Eloquent' => IlluminateDatabaseEloquentModel::class, 'Event' => IlluminateSupportFacadesEvent::class, 'File' => IlluminateSupportFacadesFile::class, 'Gate' => IlluminateSupportFacadesGate::class, 'Hash' => IlluminateSupportFacadesHash::class, 'Lang' => IlluminateSupportFacadesLang::class, 'Log' => IlluminateSupportFacadesLog::class, 'Mail' => IlluminateSupportFacadesMail::class, 'Password' => IlluminateSupportFacadesPassword::class, 'Queue' => IlluminateSupportFacadesQueue::class, 'Redirect' => IlluminateSupportFacadesRedirect::class, 'Redis' => IlluminateSupportFacadesRedis::class, 'Request' => IlluminateSupportFacadesRequest::class, 'Response' => IlluminateSupportFacadesResponse::class, 'Route' => IlluminateSupportFacadesRoute::class, 'Schema' => IlluminateSupportFacadesSchema::class, 'Session' => IlluminateSupportFacadesSession::class, 'Storage' => IlluminateSupportFacadesStorage::class, 'URL' => IlluminateSupportFacadesURL::class, 'Validator' => IlluminateSupportFacadesValidator::class, 'View' => IlluminateSupportFacadesView::class

Contracts:前面的 Facades
是系统提供的一套静态类,但是如果你希望可以自定义这些功能的话,可以用
Contracts 来实现,Contracts
的作用是为你提供好了解耦的机制,方便自定义的时候直接套用,也是因为
Contracts
的存在,可以方便的找到很多现成的代码可以直接使用(防止第三方提供的代码具有耦合性)

Contract 对应的 Facade
IlluminateContractsAuthFactory Auth
IlluminateContractsAuthPasswordBroker Password
IlluminateContractsBusDispatcher Bus
IlluminateContractsBroadcastingBroadcaster
IlluminateContractsCacheRepository Cache
IlluminateContractsCacheFactory Cache::driver()
IlluminateContractsConfigRepository Config
IlluminateContractsContainerContainer App
IlluminateContractsCookieFactory Cookie
IlluminateContractsCookieQueueingFactory Cookie::queue()
IlluminateContractsEncryptionEncrypter Crypt
IlluminateContractsEventsDispatcher Event
IlluminateContractsFilesystemCloud
IlluminateContractsFilesystemFactory File
IlluminateContractsFilesystemFilesystem File
IlluminateContractsFoundationApplication App
IlluminateContractsHashingHasher Hash
IlluminateContractsLoggingLog Log
IlluminateContractsMailMailQueue Mail::queue()
IlluminateContractsMailMailer Mail
IlluminateContractsQueueFactory Queue::driver()
IlluminateContractsQueueQueue Queue
IlluminateContractsRedisDatabase Redis
IlluminateContractsRoutingRegistrar Route
IlluminateContractsRoutingResponseFactory Response
IlluminateContractsRoutingUrlGenerator URL
IlluminateContractsSupportArrayable
IlluminateContractsSupportJsonable
IlluminateContractsSupportRenderable
IlluminateContractsValidationFactory Validator::make()
IlluminateContractsValidationValidator
IlluminateContractsViewFactory View::make()
IlluminateContractsViewView

Collections:对数组操作进行封装的一套方法,保留了 PHP
数组操作的巨大有点,同时又满足了方法的调用需求,不罗列了,可以直接看文档

Helper Functions:70-80个左右的 Laravel
封装的函数,又一次对数组、字符串、Url等等的操作进行了扩展,看来 PHP
语言的函数总量,还是达不到 Laravel
的需求,在使用的过程中可以根据需求自己挖矿,不罗列了,可以直接看文档

CakePHP 使构建 Web 应用程序更简单,更快,同时需要较少的代码。CakePHP
是一个基于PHP,免费且开源的迅速发展框架最开始从 Ruby On Rails
框架里得到灵感。

各种集成

Laravel
Cashier可以满足你要开发支付系统所需要的一切需求。除此之外,它还同步并集成了用户身份验证系统。所以,你不再需要担心如何将计费系统集成到开发当中了。

$user = User::find(1);
$user->subscription('monthly')->create($creditCardToken);

Laravel 需要使用 composer 安装,然后安装 composer
本身又需要命令行支持https翻墙(后来知道其实下载也可以),https翻墙需要装
icu4c,icu4c 需要安装 brew,好在 ruby
已经系统安装了,不然这个循环还会继续下去。Laravel 最新版本对 PHP
版本的要求也比较高,要求 PHP >= 5.6.4,为此专门把本地 PHP
版本升了级。

  • 没有命名空间,虽然这会让它提速

  • 不像其他的那样能友好地进行单元测试

  • 内置的库比较少

模块化和可扩展性

Laravel注重代码的模块化和可扩展性。你可以在包含超过5500个程序包的Packalyst目录中找到你想要添加的任何文件。Laravel的目标是让你能够找到任何想要的文件。

过去做事情急,什么东西拿起来就用,不喜欢进行系统性的学习,造成在使用过程中的错误和低效,现在感觉自己耐心多了,用之前先系统的看一下文档,再接着用。

Aura

HTTP路径

Laravel拥有类似于Ruby on
Rails的,快速、高效的路由系统。它可以让用户通过在浏览器上输入路径的方式让应用程序的各部分相关联。

以下是阅读官方文档做的记录,基于5.2版本:

CakePHP

加密

一个安全的应用程序应该做到可把数据进行加密。使用Laravel,可以启用OpenSSL安全加密算法AES-256-CBC来满足你所有的需求。另外,所有的加密值都是由检测加密信息是否被改变的验证码所签署的。

use Illuminate/Contracts/Encryption/DecryptException; 
try { 
   $decrypted = Crypt::decrypt($encryptedValue);
} catch (DecryptException $e) { 
   // 
}

View 和 Template

View
View 可以进行判断:
if (View::exists('emails.customer')) { // }

如果你希望每个 Controller
中都可以共享一些值,也可以有方法可以实现,但是会有人记得用吗?
public function boot() { View::share('key', 'value'); }

View Composers
如果你希望不同的 Controller 中的 View 可以共享一些数据,那么就可以引入
View Composers
的机制,不过个人感觉实践中没有特别的必要使用这个机制,太私人的业务逻辑归属会让代码不易维护

Blade Templates
Laravel
提供的一套轻量级的模板引擎,未来的架构会越来越趋向于前后端的分离,加之
PHP
语言本身具有较强的模板特性,内置一套轻量级的模板引擎是非常聪明的解决方案。

优:

微服务和程序接口

Lumen是一个由laravel衍生的专注于精简的微框架。它高性能的程序接口可让你更加简单快速的开发微型项目。Lumen使用最小的配置集成了所有laravel的重要特性,你可以通过将代码复制到laravel项目的方式将完整的框架迁移过来。

<?php
$app->get('/', function() {
   return view('lumen');
});
$app->post('framework/{id}', function($framework) {
   $this->dispatch(new Energy($framework));
});

Zend Framework 使用 Composer 作为包依赖管理器;PHPUnit
测试所有包:Travis CI 作为持续集成服务。Zend Framework 还遵循 PHP-FIG
标准,并且使用 PSR-7 用于 HTTP 消息接口的实现。

HTTP中间件

Route::get('/', function () { 
   return 'Hello World'; 
});

应用程序可受到中间件的保护——中间件会处理分析和过滤服务器上的HTTP请求。你可以安装中间件,用于验证注册用户,并避免如跨站脚本(XSS)或其它的安全状况的问题。

<?php 
namespace App/Http/Middleware; 
use Closure; 
class OldMiddleware { 
  public function handle($request, Closure $next) { 
    if ($request->input('age') <= 200) { 
         return redirect('home'); 
    } 
    return $next($request);
  }
}

澳门新浦京娱乐游戏 2澳门新浦京娱乐游戏 3

  • 不支持共享托管计划

  • 数据库太多的询问

澳门新浦京娱乐游戏 4澳门新浦京娱乐游戏 5

  • 不像 Laravel 那样开源

  • Bug 需要等待官方修复

  • 不适用于 HHVM

Zend

  • 最新框架还不为人所知

Symphony

劣:

Phpixie

  • 即使文档很好,但是学习曲线也很陡峭。

最受欢迎的全套 PHP 框架之一。它附带了很好的加密和安全工具,支持
MongoDB,以及与Composer 的代码共享,全部开箱即用。

FuelPHP 是个简单、灵活、社区驱动的 PHP 5 Web
框架。出于对目前可用框架的不满,它应运而生,并在开发者社区的支持下不断发展。FuelPHP
的可移植性极高,可运行于多种服务器中,并具备简洁的语法。

  • 模块比较少

  • 不支持那些从依赖独立制作的组件

  • 文件和代码有条理

  • 快速 app 开发

  • MVC 架构

  • 单元测试(HHVM 上的 FAST)

  • 高水平的抽象

  • 使用动态方法负载

  • 一堆开箱即用的功能

  • Cashier 支付解决方案

  • 非常强大的加密包

  • ORM

  • 自从它的新版本以来,没有官方的 LTS 发布

PHP 版本需要 5.3.3 以上

AURA
项目围绕一系列高质量,经过良好测试,符合语法的版本,符合标准的,可用于任何代码库的独立库包。

优:

劣:

  • 轻量级

  • 学习曲线平缓

  • 路由、缓存引擎、代码都会很快的优化

  • 多语言

  • 支持 SQL 或 No SQL

  • Databases

  • 大量的包,包括单元测试和图片

  • Processing, JavaScript / CSS 压缩,数据验证,Open id 等

劣:

劣:

劣:

劣:

原文

优:

PHP 版本需要 5.3 以上

劣:

优:

FuelPHP

PHP 版本需要 5.5.9 以上

Slim 是一个PHP微框架,可帮助你快速编写简单而强大的 Web 应用程序和 API。

Laravel

  • 低开销

  • 自动装载

  • 独特,因为它是基于C扩展

  • 内置非常好的安全功能

  • 文档完备

  • 开发人员友好

澳门新浦京娱乐游戏 6澳门新浦京娱乐游戏 7

Fat-Free

澳门新浦京娱乐游戏 8澳门新浦京娱乐游戏 9

劣:

  • 开发人员友好

  • 不需要任何特殊的依赖或支持

  • 使用标准的数据库(如 MySQL)能够很好的使用正常的 Web 托管服务

  • 优于大多数其他框架(不包括 MVC)

  • 良好的文档和 LTS(长期支持)

  • 不是快速应用开发的理想选择
  • 适用于企业应用

  • 面相对象

  • 海量组件用于验证,反馈和表单

  • 解耦

PHP 版本需要 5.5 以上

澳门新浦京娱乐游戏 10澳门新浦京娱乐游戏 11

  • 相对比较新的框架

  • 容易上手,文档友好

  • 令人印象深刻的路由系统

  • 可以快速编译

  • HMVC 模式导向

CodeIgniter

PHP 版本需要 5.3 以上

PHP 版本需要 5.3 以上

澳门新浦京娱乐游戏 12澳门新浦京娱乐游戏 13

优:

Phalcon

Laravel 是一个全面的框架,旨在快速构建使用 MVC
架构的应用程序。它是当今最流行的 PHP 框架,拥有庞大的开发人员社区。

优:

优:

  • 精简轻量级

  • 入门指南

  • 完善的 Small rest apis

  • 积极的发展

  • 加载项包括:HTTP 缓存和 Flash

劣:

CodeIgniter 是一个非常强大且占用空间很小的 PHP
框架,专为需要简单优雅的工具包的开发人员而设计,以创建全功能的 Web
应用程序。

澳门新浦京娱乐游戏 14澳门新浦京娱乐游戏 15

  • 过于「微」框架

  • 与其他框架比,没有什么新的选项

  • 对初学者不友好(很少的支持文档)

  • 比较新的框架,支持比较少

  • 开源社区 contribution 明显少于其他框架

优:

澳门新浦京娱乐游戏 16澳门新浦京娱乐游戏 17

澳门新浦京娱乐游戏 18澳门新浦京娱乐游戏 19

Phalcon 是一个基于 MVC 的 PHP
框架。与其他框架相比,它使用的资源非常少,转化为 HTTP
请求能够非常快速的处理,对于不提供太多消耗的系统的开发人员来说,这是非常重要的。

每个库都是独立的并且只包含最核心需要的东西,没有一个库包依赖于任何其他包。它们不仅从任何特定的框架分离,而且彼此相互分离。这意味着开发人员可以根据需要使用尽可能多的项目。

  • 最快的可实践 RESTful 框架

  • 足够的文档让你上手

  • 完善的 Small rest apis

  • 发展的很积极

  • 加载项包括:HTTP 缓存和 Flash

优:

  • 现代框架,支持 PHP 5.5

  • Scaffholding 系统和快速构建

  • 非常适合商业网页应用(MIT 许可证)

  • 内置数据库访问,缓存,验证,认证

  • 包括跨站点在内的各种扩展 safekeeping 工具

  • 防脚本,防 SQL 注入

  • CSRF 和表单验证

  • 良好的文档

  • 发展趋势良好

澳门新浦京娱乐游戏 20澳门新浦京娱乐游戏 21

PHP 版本需要 5.4 以上

PHP 版本需要 5.5 以上

劣:

优:

澳门新浦京娱乐游戏 22澳门新浦京娱乐游戏 23

优:

劣:

  • 高性能

  • 稳定

  • 良好的文档,维护和支持

  • 非常好的支持,非常成熟

发表评论

电子邮件地址不会被公开。 必填项已用*标注