加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

初识laravel5

发布时间:2020-12-14 19:51:39 所属栏目:大数据 来源:网络整理
导读:《:初识laravel5》要点: 本文介绍了:初识laravel5,希望对您有用。如果有疑问,可以联系我们。 目录布局变化 PHP编程 laravel5最先强调的是项目目录布局的变化,与4.2区别还是蛮大的,逐条来说吧. PHP编程 新的目录布局看上去像这样: PHP编程 app ??? Comm

《:初识laravel5》要点:
本文介绍了:初识laravel5,希望对您有用。如果有疑问,可以联系我们。

目录布局变化PHP编程

laravel5最先强调的是项目目录布局的变化,与4.2区别还是蛮大的,逐条来说吧.PHP编程

新的目录布局看上去像这样:PHP编程

app
??? Commands
??? Console
??? Events
??? Handlers
??????? Commands
??????? Events
??? Http
??????? Controllers
??????? Middleware
??????? Requests
??????? Kernel.php
??????? routes.php
??? Providers
??? Services
bootstrap
config
database
??? migrations
??? seeds
public
??? package
resources
??? lang
??? views
storage
??? cache
??? logs
??? meta
??? sessions
??? views
??? work
testsPHP编程

4.2的目录布局:PHP编程

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

App命名空间PHP编程

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

HTTPPHP编程

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

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

Requests是对核心类Request的扩展,你可以扩展分歧的Requests类,添加分歧的功能.PHP编程

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

路由PHP编程

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

代码如下:

Route::controllers([
??? 'auth' => 'AuthAuthController',
??? 'password' => 'AuthPasswordController',
]);

可以在 App/Http/Controllers/Auth 目录下找到对应的类.PHP编程

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

代码如下:

php artisan route:cache

即可轻松生成,也可以通过PHP编程

代码如下:

php artisan route:clear

清理缓存.PHP编程

ServicesPHP编程

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

代码如下:

# Http/Controllers/Auth/AuthController.php
<?php namespace AppHttpControllersAuth;
use AppHttpControllersController;
use IlluminateContractsAuthGuard;
use IlluminateContractsAuthRegistrar;
use IlluminateFoundationAuthAuthenticatesAndRegistersUsers;
class AuthController extends Controller {
??? /*
??? |--------------------------------------------------------------------------
??? | Registration & Login Controller
??? |--------------------------------------------------------------------------
??? |
??? | This controller handles the registration of new users,as well as the
??? | authentication of existing users. By default,this controller uses
??? | a simple trait to add these behaviors. Why don't you explore it?
??? |
??? */
??? use AuthenticatesAndRegistersUsers;
??? /**
???? * Create a new authentication controller instance.
???? *
???? * @param? IlluminateContractsAuthGuard? $auth
???? * @param? IlluminateContractsAuthRegistrar? $registrar
???? * @return void
???? */
??? public function __construct(Guard $auth,Registrar $registrar)
??? {
??????? $this->auth = $auth;
??????? $this->registrar = $registrar;
??????? $this->middleware('guest',['except' => 'getLogout']);
??? }
}

这是一个登陆授权的控制器,我们看 __construct构造函数,利用参数自动注入了一个 "接口实现(参考手册IoC)" 的绑定,我们看下Registrar:PHP编程

代码如下:

<?php namespace AppServices;
use AppUser;
use Validator;
use IlluminateContractsAuthRegistrar as RegistrarContract;
class Registrar implements RegistrarContract {
??? /**
???? * Get a validator for an incoming registration request.
???? *
???? * @param? array? $data
???? * @return IlluminateContractsValidationValidator
???? */
??? public function validator(array $data)
??? {
??????? return Validator::make($data,[
??????????? 'name' => '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(array $data)
??? {
??????? return User::create([
??????????? 'name' => $data['name'],
??????????? 'email' => $data['email'],
??????????? 'password' => bcrypt($data['password']),
??????? ]);
??? }
}

提交用户名暗码时的处理:PHP编程

代码如下:

public function postRegister(Request $request)
{
??? $validator = $this->registrar->validator($request->all());
??? if ($validator->fails())
??? {
??????? $this->throwValidationException(
??????????? $request,$validator
??????? );
??? }
??? $this->auth->login($this->registrar->create($request->all()));
??? return redirect($this->redirectPath());
}

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

代码如下:

$validator = $this->registrar->validator($request->all());

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

模型PHP编程

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

时间有限,先写这么多吧.希望年夜家能够喜欢.PHP编程

《:初识laravel5》是否对您有启发,欢迎查看更多与《:初识laravel5》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读