初识laravel5_PHP教程
初识laravel5
laravel5发布了,目前国内相关资料还比较少,只能先翻墙去官网先看看了,初步总结了一些变化,就想写下来。
目录结构变化
laravel5最先强调的是项目目录结构的变化,与4.2区别还是蛮大的,逐条来说吧。
新的目录结构看上去像这样:
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
tests
4.2的目录结构:
app
commands
config
controllers
database
lang
models
start
storage
tests
views
bootstrap
public
对比一下,改变还是比较大的,可以看到 config,database被移动到根目录,lang,views目录被移动到resources目录下,controllers被整合到http目录里,models目录不见了,还有一些新增的目录就略了。
App命名空间
laravel5里还有一个变化,那就是app目录默认加上了一个根命名空间 App ,在 App 下的所有目录、类都应当在该命名空间下,简而言之就是采用了psr4标准。
HTTP
laravel5认为,新的目录结构是目前最好的结构之一,可以让我们的开发更加得心应手,比如http目录:
Http
Controllers
Middleware
Requests
Kernel.php
routes.php
Middleware 很陌生,其实它是原来的路由filter的一个升级版,现在不用在filters.php里定义过滤器,取而代之的是在 Middleware 目录中创建类,并在Kernel.php中配置全局还是可选,全局的Middleware在每个请求都会执行,而可选的就相当于原来的filter,可以在路由中使用,也可以在控制器中使用。
Requests是对核心类Request的扩展,你可以扩展不同的Requests类,添加不同的功能。
可以认为,所有关于http请求有关的处理都在http目录中,比如控制器就是用来接受一个请求并返回的,所以将它放在 Http 目录里合情合理。
路由
路由跟以前的区别不大,但是需要注意的当我们指定控制器命名空间时,命名空间不是绝对路径,而是相对于 App\Http\Controllers,举例:
代码如下:
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
]);
可以在 App/Http/Controllers/Auth 目录下找到对应的类。
此外,路由还支持缓存,以提升性能,通过命令行工具
代码如下:
php artisan route:cache
即可轻松生成,也可以通过
代码如下:
php artisan route:clear
清理缓存。
Services
我们看到在App目录下还有一个Services目录,我觉得这是一个很赞的理念,一直以来,我都对于控制器中出现大段的业务逻辑代码而烦躁,我很想用一个单独的层把这些业务逻辑封装起来,而services就可以用来干这个活,当然,它不是必须的,但我强烈建议使用。就以laravel5自带的demo来看看吧:
代码如下:
# Http/Controllers/Auth/AuthController.php
use App\Http\Controllers\Controller;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Contracts\Auth\Registrar;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
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 \Illuminate\Contracts\Auth\Guard $auth
* @param \Illuminate\Contracts\Auth\Registrar $registrar
* @return void
*/
public function __construct(Guard $auth, Registrar $registrar)
{
$this->auth = $auth;
$this->registrar = $registrar;
$this->middleware('guest', ['except' => 'getLogout']);
}
}
这是一个登陆授权的控制器,我们看 __construct构造函数,利用参数自动注入了一个 "接口实现(参考手册IoC)" 的绑定,我们看下Registrar:
代码如下:
use App\User;
use Validator;
use Illuminate\Contracts\Auth\Registrar as RegistrarContract;
class Registrar implements RegistrarContract {
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
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']),
]);
}
}
提交用户名密码时的处理:
代码如下:
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());
}
可以看到,表单验证的业务逻辑仅仅一行:
代码如下:
$validator = $this->registrar->validator($request->all());
整个控制器的代码显得干净易读,我们可以把很多通用的业务逻辑封装成service,比不伦不类地直接封装在控制器类好。
模型
models目录不见了,因为不是所有应用都需要用到数据库的,所以laravel5默认不提供该目录可以理解,而且由于提供了 App 这个namespace,所以我们可以自己在 App/ 下创建 Models 目录,其中所有模型类都声名namespace App\Models;即可,只是使用上比以前麻烦一些,需要先use,不过这样也使得项目结构更加清晰,一切类库都在命名空间的组织之下。
时间有限,先写这么多吧。希望大家能够喜欢。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

小红书你们可以查看到各种的内容,为你带来多样的帮助,让你发现更美好的生活,你有什么想要分享的话,也是可以在这里发布的,让大家都可以看一看,同时还能够为自己带来收益,非常的划算,有不懂怎么在这里发作品的,都可以查看教程,每天都可以使用这个软件,发布各种内容,帮助大家们更好的使用起来,有需要的都不要错过了! 1、打开小红书,点击下方加号图标。 2、这里有【视频】【图片】【实况图】选择;选择想要发布的内容点击勾选。 3、在内容编辑页选择【下一步】。 4、输入您想要发布的文字内容点击【发布笔

随着社交媒体的迅速发展,短视频平台已成为许多用户展示自我、分享生活的主要渠道。在小红书发布作品视频时,许多用户可能会遇到各种问题。本文将讨论可能导致小红书作品视频发布失败的原因,并提供正确的发布方法。一、为什么小红书发布不了作品视频?小红书平台偶尔会发生系统故障,可能是由于系统维护或升级等原因造成的。在这种情况下,用户可能会遇到无法发布作品视频的问题。用户需要耐心等待平台恢复正常后再尝试发布。网络连接不稳定或速度缓慢可能会妨碍用户在小红书上发布作品视频。用户应当确认自己的网络环境,确保连接稳定且

小红书作为一款生活方式分享平台,吸引了大量用户在此分享生活点滴、种草商品。不少用户反映,自己的发布内容无法展示,这究竟是怎么回事呢?本文将分析可能导致小红书发布不出去的原因,并给出解决办法。一、为什么小红书发布不出去?小红书执行严格的社区准则,对于发布广告、垃圾信息、低俗内容等行为持零容忍态度。如果用户的内容违反规定,系统会进行拦截,导致内容无法展示。小红书要求用户发布高质量、有价值的内容,内容需要具有独特性和新意。如果内容过于普通、缺乏创新,可能无法通过审核,从而无法在平台上展示。3.账号异常

在当今的社交网络时代,小红书已经成为年轻人分享生活、获取资讯的重要平台。许多用户希望通过在小红书上发布内容,吸引更多的关注和流量。那么,什么时间发布内容效果最好呢?本文将详细探讨小红书发布时间的选择以及流量推荐最多的发布位置。一、小红书几点发布效果最好?小红书发布内容的最佳时机通常是在用户活跃度较高的时间段。根据小红书用户的特点和行为习惯,有几个时间段是比较适宜的。在晚上7点到9点这个时间段,大多数用户已经下班回到家,开始使用手机浏览内容,寻找放松和娱乐。因此,在这个时段发布的内容更有可能引起用

小红书作为一家流行的社交电商平台,吸引了大量用户分享生活点滴和购物心得。有时候我们可能会不经意发布一些不合适的内容,这时候需要及时删除,这样可以更好地维护个人形象或者遵守平台规定。一、小红书发布怎么删除?1.登录小红书账号,进入个人主页。2.在个人主页下方,找到“我的创作”选项,点击进入。3.在“我的创作”页面,你可以看到所有发布的内容,包括笔记、视频等。4.找到需要删除的内容,点击右侧的“...”按钮。5.在弹出的菜单中,选择“删除”选项。6.确认删除后,该条内容将从你的个人主页和公共页面消失

小红书app如何进行发布作品呢?很多的小伙伴们都知道在这款软件里面有着大量的创作作品以及强大的交友圈子。对于刚接触这款软件的用户们估计还不知道怎么进行发布作品吧,让更多的人去观看另一面的你。如果你还不知道怎么去发布里面的作品,那就赶紧参考一下又本站中的小编所推荐的小红书app五分钟发布作品的教程。小红书app五分钟发布作品的教程 1.点击【三】 如图所示,点击左上方红箭头所指的【三】。 2.点击【创作中心】 如图所示,点击红箭头所指的【创作中心】。 3.点击【去发布】 如图所示,

随着短视频平台的兴起,小红书成为了许多人分享生活、表达自我、获取流量的平台。在这个平台上,发布视频作品是一种非常受欢迎的互动方式。那么,如何发布小红书视频作品呢?一、如何发布小红书视频作品?首先,确保准备好一段适合分享的视频内容。你可以利用手机或其他摄像设备进行拍摄,需要注意画质和声音的清晰度。2.剪辑视频:为了让作品更具吸引力,可以对视频进行剪辑。可以使用专业的视频剪辑软件,如抖音、快手等,添加滤镜、音乐、字幕等元素。3.选择封面:封面是吸引用户点击的关键,选择一张清晰、有趣的图片作为封面,让

马自达公司最近透露了备受期待的计划,据官方消息,全新的马自达6将于2024年上半年正式发布,并计划在同年年底上市销售。这款全新的马自达6将采用全新的后驱平台,为马自达的车型带来全新的驾驶动力体验马自达的欧洲开发与工程负责人JoachimKunz在最近的一次采访中表示,虽然他们正在开发新平台,但这一平台不会被用于生产全新一代的马自达5轿车,也不会用于其他大型运动轿车的制造。这一决策似乎反映了市场需求的变化,因为现今的消费者更加偏好SUV车型,而不是传统的轿车。Kunz进一步指出,尽管六缸发动机和后
