www.6766.com初识laravel5_php实例_脚本之家

复制代码 代码如下:$validator =
$this->registrar->validator;

复制代码 代码如下:public function
postRegister{ $validator = $this->registrar->validator; if {
$this->throwValidationException( $request, $validator ); }
$this->auth->login($this->registrar->create; return
redirect);}

目录结构变化

App命名空间

app commands config controllers database lang models start storage tests
viewsbootstrappublic对比一下,改变还是比较大的,可以看到
config,database被移动到根目录,lang,views目录被移动到resources目录下,controllers被整合到http目录里,models目录不见了,还有一些新增的目录就略了。

laravel5认为,新的目录结构是目前最好的结构之一,可以让我们的开发更加得心应手,比如http目录:

模型

Requests是对核心类Request的扩展,你可以扩展不同的Requests类,添加不同的功能。

app Commands Console Events Handlers Commands Events Http Controllers
Middleware Requests Kernel.php routes.php Providers
Servicesbootstrapconfigdatabase migrations seedspublic packageresources
lang viewsstorage cache logs meta sessions views worktests

laravel5最先强调的是项目目录结构的变化,与4.2区别还是蛮大的,逐条来说吧。

新的目录结构看上去像这样:

提交用户名密码时的处理:

即可轻松生成,也可以通过

models目录不见了,因为不是所有应用都需要用到数据库的,所以laravel5默认不提供该目录可以理解,而且由于提供了
App 这个namespace,所以我们可以自己在 App/ 下创建 Models
目录,其中所有模型类都声名namespace
AppModels;即可,只是使用上比以前麻烦一些,需要先use,不过这样也使得项目结构更加清晰,一切类库都在命名空间的组织之下。

HTTP

整个控制器的代码显得干净易读,我们可以把很多通用的业务逻辑封装成service,比不伦不类地直接封装在控制器类好。

路由跟以前的区别不大,但是需要注意的当我们指定控制器命名空间时,命名空间不是绝对路径,而是相对于
AppHttpControllers,举例:

laravel5里还有一个变化,那就是app目录默认加上了一个根命名空间 App ,在
App 下的所有目录、类都应当在该命名空间下,简而言之就是采用了psr4标准。

复制代码 代码如下: ‘required|max:255′,
’email’ => ‘required|email|max:255|unique:users’, ‘password’ =>
‘required|confirmed|min:6’, ]); } /** * Create a new user instance
after a valid registration. * * @param array $data * @return User */
public function create { return User::create([ ‘name’ =>
$data[‘name’], ’email’ => $data[’email’], ‘password’ =>
bcrypt, ]); }}

复制代码 代码如下:php artisan route:clear

我们看到在App目录下还有一个Services目录,我觉得这是一个很赞的理念,一直以来,我都对于控制器中出现大段的业务逻辑代码而烦躁,我很想用一个单独的层把这些业务逻辑封装起来,而services就可以用来干这个活,当然,它不是必须的,但我强烈建议使用。就以laravel5自带的demo来看看吧:

复制代码 代码如下:php artisan route:cache

复制代码 代码如下:#
Http/Controllers/Auth/AuthController.phpauth = $auth;
$this->registrar = $registrar; $this->middleware(‘guest’,
[‘except’ => ‘getLogout’]); }}

Http Controllers Middleware Requests Kernel.php routes.phpMiddleware
很陌生,其实它是原来的路由filter的一个升级版,现在不用在filters.php里定义过滤器,取而代之的是在
Middleware
目录中创建类,并在Kernel.php中配置全局还是可选,全局的Middleware在每个请求都会执行,而可选的就相当于原来的filter,可以在路由中使用,也可以在控制器中使用。

这是一个登陆授权的控制器,我们看
__construct构造函数,利用参数自动注入了一个 “接口实现”
的绑定,我们看下Registrar:

可以在 App/Http/Controllers/Auth 目录下找到对应的类。

路由

Services

复制代码 代码如下:Route::controllers([
‘auth’ => ‘AuthAuthController’, ‘password’ =>
‘AuthPasswordController’,]);

时间有限,先写这么多吧。希望大家能够喜欢。

可以看到,表单验证的业务逻辑仅仅一行:

此外,路由还支持缓存,以提升性能,通过命令行工具

可以认为,所有关于http请求有关的处理都在http目录中,比如控制器就是用来接受一个请求并返回的,所以将它放在
Http 目录里合情合理。

发表评论

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

网站地图xml地图