初识laravel5
《:初识laravel5》要点: 目录布局变化PHP编程 laravel5最先强调的是项目目录布局的变化,与4.2区别还是蛮大的,逐条来说吧.PHP编程 新的目录布局看上去像这样:PHP编程 app 4.2的目录布局:PHP编程 app App命名空间PHP编程 laravel5里还有一个变化,那便是app目录默认加上了一个根命名空间 App,在 App 下的所有目录、类都应当在该命名空间下,简而言之便是采用了psr4标准.PHP编程 HTTPPHP编程 laravel5认为,新的目录结构是目前最好的结构之一,可以让我们的开发更加得心应手,好比http目录:PHP编程 Http 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为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |