遠振主機中設定php上傳檔案限制的方式,
一、Cpanel選Select PHP Version
二、點選Switch to PHP Options
三、頁面可以設定PHP.ini的相關參數,設定完後按儲存即可
大型網站架構..net 架構師.rabbitMQ.redis.行動開發.APP開發教學.PHP Laravel開發..net core C# 開發.架構師之路.Delphi開發.資料庫程式.進銷存.餐飲POS系統
任何一個網站框架最基本的功能就是透過http(s)取得客戶端的需求後並且回覆相關資訊,這意味著在學習框架中首要的是定義路由,如果沒有路由也就無法完成與客戶端互動。
在本章我們將瞭解Laravel的框架以及如何定義路由,並且熟悉如何使用Laravel的路由工具去處理各種路由的需求。
在Laravel的框架中,你可以透過 routes/web.php 定義 web相關的 routes,並透過 routes/api.php 定義 api相關的 routes。也就是說你可以將api與web做區隔建立對應的route。(如果是 5.3之前的版本,routes則存在 app/Http/routes.php中。)在這邊我們主要討論的是 web.php為主。
在web.php中有一個為根目錄(‘/’)且附帶閉包函數的預設路由。這個路由預設是使用者造訪根目錄時,就會回傳 welcome.blade.php 的內容。
1
2
3
|
Route::get( '/' , function () { return view( 'welcome' ); }); |
除此之外,我們也可以不透過echo或print回傳字串。例如:
1
2
3
|
Route::get( '/' , function () { return 'Hello World!' ; }); |
假設我們要設定一個回傳about的路由,可以透過
1
2
3
|
Route::get( 'about' , function () { return 'this is about!' ; }); |
或顯示 resource/views/about.blade.php
1
2
3
|
Route::get( 'about' , function () { return view( 'about' ); }); |
在HTTP通訊協定中制定了幾種動詞(Verbs)與伺服器溝通,在上一節中我們使用GET用來讀取資料。那其他PUT、POST、DELETE該如何定義?
1
2
3
4
5
|
Route::post( '/' , function () {}); Route::put( '/' , function () {}); Route::delete( '/' , function () {}); |
如果要符合所有通詞,則使用any
1
|
Route::any( '/' , function () {}); |
另外,要符合部分動詞,則使用match
1
|
Route::match([ 'get' , 'post' ], '/' , function () {}); |
如果要路由至特定的控制器(Controller),下面的例子會對應到 app/Http/Controllers/WelcomeController.php的index函數
1
|
Route::get( '/' , 'WelcomeController@index' ); |
如果你的路由需要傳遞參數的話,,該如何傳遞呢?
1
2
3
|
Route::get( 'users/{id}' , function ($id) { // }); |
如果傳遞的參數要有預設值的話,
1
2
3
|
Route::get( 'users/{id}' , function ($id= '123' ) { // }); |
另外,參數也可以透過正規式讓裡頭的函數只能接收相 對應的值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// id只能輸入 0-9 Route::get( 'users/{id}' , function ($id) { // })->where( 'id' , '[0-9]+' ); // username只能輸入大小寫的英文字母 Route::get( 'users/{username}' , function ($username) { // })->where( 'username' , '[A-Za-z]+' ); // id只能輸入數字;slug只能輸入英文字母 Route::get( 'posts/{id}/{slug}' , function ($id, $slug) { Route Definitions | 27 // })->where([ 'id' => '[0-9]+' , 'slug' => '[A-Za-z]+' ]); |
在url Helper可以透過 url()去轉向,而在laravel框架中更允許你對每個路由做命名。
例如我們要顯示某一位會員的資料,可以先將會員資料做處理,
1
2
3
4
|
// 定義members/ID為members.show Route::get( 'members/{id}' , 'MembersController@show' )->name( 'members.show' ); // 在View <a href= "<?php echo route('members.show', ['id' => 14]); ?>" > |
在Laravel裡有一個好用的路由群組,舉例來說,我有一個api相關的群組,一開始的定義可能如下:
1
2
3
4
5
6
|
Route::get( '/api' , function () { }); Route::get( '/api/users' , function () { }); |
我們透過路由群組可以簡化成
1
2
3
4
5
6
7
8
|
Route::group([ 'prefix' => 'api' ], function () { Route::get( '/' , function () { }); Route::get( 'users' , function () { }); }); |
在網址裡,可能會有不同的子網域,我們也可以透過子網域的路由來完成
1
2
3
4
5
|
Route::group([ 'domain' => 'admin.codedata.com.tw' ], function () { Route::get( '/' , function () { // }); }); |
同樣的,也可以透過參數帶入不同的子網域
1
2
3
4
5
6
7
|
Route::group([ 'domain' => '{account}.codedata.com.tw' ], function () { Route::get( '/' , function ($account) { // }); Route::get( 'article/{id}' , function ($account, $id) { // }); |
這樣大家對路由有沒有基本的瞭解了呢?下一次我們來解說Controller(控制器)。
PhpStorm是目前PHP開發工具中最強也最完整的一套,11/24推出2016.3的正式版本了!
該版本還對頂尖 web 技術的支持進行了重大改進,如:支持流(flow)、改進對 TypeScript 的支持、支持 PostCSS、Stylelint 等。
原始連結: https://blog.jetbrains.com/phpstorm/2016/11/phpstorm-2016-3-is-now-released/
下載: https://www.jetbrains.com/phpstorm/download/#section=windows-version
前陣子在codedata上開始撰寫laravel5的教學文章,也深受一些網友的好評。
原則上文章的出現都會是在學校教完課後一個段落,才會整理放上的唷!
Laravel是最近很夯的PHP framework。因為有在教學Laravel開發~所以順道將這部份用文字記錄分享
PHP Laravel 開發入門(一) – 環境建置
PHP Laravel 開發入門(二) – 設置與目錄架構
在Laravel中我們要產出json格式的話,一般只要
[php]
Route::get(‘json’, function () {
$users = DB::table(‘users’)->get();
return Response::json($users);
}
[/php]
但是遇到中文時,會出現有亂碼的問題,解決很簡單
[php]
Route::get(‘json’, function () {
$headers = array(‘Content-Type’ => ‘application/json; charset=utf-8’);
$users = DB::table(‘users’)->get();
return Response::json($users, 200, $headers, JSON_UNESCAPED_UNICODE);
});
[/php]
一、下載 https://github.com/superlevin/xamppforlaravel
二、config/database.ph的connections增加
[php]
‘sqlsrv’ => [
‘driver’ => ‘sqlsrv’,
‘host’ => env(‘DB_HOST’, ‘localhost’),
‘database’ => env(‘DB_DATABASE’, ‘dbname’),
‘username’ => env(‘DB_USERNAME’, ‘dbuser’),
‘password’ => env(‘DB_PASSWORD’, ‘dbpassword’),
‘charset’ => ‘utf8’,
‘prefix’ => ”,
],
[/php]
三、.env修改連線
[php]
DB_CONNECTION=sqlsrv
DB_HOST=localhost
DB_PORT=1433
DB_DATABASE=dbname
DB_USERNAME=dbuser
DB_PASSWORD=dbpassword
[/php]
四、測試是否可以產生
routes/web.php
[php]
Route::get(‘/’, function () {
var_dump( DB::table(‘tablename’)->first() );
});
[/php]
上個學期是教Codeigniter,這學期開始也要進入Laravel了!內容大致如下面~
Laravel介紹
MVC架構解說
Git版本控制介紹與安裝
Composer套件管理
Package安裝及使用
Route路由
Migrations/Seed 資料的遷移與填充
View與Blade模板引擎
Controller實戰
表單與驗證技巧
會員認證
網站安全性
網站建立了Sitemap.xml文件能夠快速地被Google、Bing等收錄且有利於搜尋的檔案。
CodeIgniter產生的方式:
controller
[php]
Class Seo extends CI_Controller {
function sitemap()
{
$data = "";//網站的url
header("Content-Type: text/xml;charset=iso-8859-1");
$this->load->view("sitemap",$data);
}
}
[/php]
views
[php]
<?= ‘<?xml version="1.0" encoding="UTF-8" ?>’ ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc><?= base_url();?></loc>
<priority>1.0</priority>
</url>
<!– My code is looking quite different, but the principle is similar –>
<?php foreach($data as $url) { ?>
<url>
<loc><?= base_url().$url ?></loc>
<priority>0.5</priority>
</url>
<?php } ?>
</urlset>
[/php]
config/routes.php
$route[‘seo/sitemap\.xml’] = “seo/sitemap”;