初识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脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++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.確認刪除後,該條內容將從你的個人主頁和公開頁面消失

隨著短影片平台的興起,小紅書成為了許多人分享生活、表達自我、獲取流量的平台。在這個平台上,發布影片作品是一種非常受歡迎的互動方式。那麼,如何發布小紅書影片作品呢?一、如何發布小紅書影片作品?首先,確保準備好一段適合分享的影片內容。你可以利用手機或其他攝影設備拍攝,需要注意畫質和聲音的清晰度。 2.剪輯影片:為了讓作品更具吸引力,可以剪輯影片。可使用專業的影片剪輯軟體,如抖音、快手等,加入濾鏡、音樂、字幕等元素。 3.選擇封面:封面是吸引用戶點擊的關鍵,選擇一張清晰、有趣的圖片作為封面,讓

小紅書app如何進行發布作品呢?很多的朋友都知道在這款軟體裡面有著大量的創作作品以及強大的交友圈。對於剛接觸這款軟體的用戶們估計還不知道怎麼進行發布作品吧,讓更多的人去觀看另一面的你。如果你還不知道怎麼去發布裡面的作品,那就趕緊參考一下又本站中的小編所推薦的小紅書app五分鐘發布作品的教程。小紅書app五分鐘發布作品的教學 1.點選【三】 如圖所示,點選左上方紅箭頭所指的【三】。 2.點選【創作中心】 如圖所示,點選紅箭頭所指的【創作中心】。 3.點選【去發布】 如圖所示,

隨著社群媒體的不斷發展,小紅書成為了年輕人分享生活、發現潮流、獲取靈感的重要平台。在這個充滿活力的社群裡,如何發布高品質的內容,吸引更多的關注和點贊,成為了許多用戶關心的問題。一、如何發布小紅書內容?在創作之前,選擇一個合適的主題至關重要。你可以根據自己的興趣和專長來挑選一個吸引人的主題。這樣做不僅能讓你在寫作過程中保持熱情,還能讓讀者更容易與你的作品產生共鳴。 2.精心設計標題:標題是吸引讀者點擊的關鍵,應該簡潔明了,同時要具有一定的吸引力和引人入勝的特點。避免使用誇張的措辭,以免讀者產生反
