laravel 学习笔记1
2015-05-29 10:16
761 查看
最近开始看laravel了,以后就在这里记录学习中的一些注意的地方和一些关键功能的用法(版本laravel5):
1.获取配置项
\Config::get('app.timezone');这样可以获取到app.php文件里的timezone的配置项的参数,看了同事的laravel4里面没有\斜杠发现会报错,所以这里要加上斜杠,或许是因为laravel5和4的目录结构和命名空间变了吧,如果不想加斜杠可以在文件头部use类名,然后斜杠就省略了,支持多个use类名1,类名2,类名3;.也可以这样获取config('app.timezone');,临时修改配置参数:\Config::set('app.timezone',123);这样设置了以后获取的timeone就会变成123.如果自定义配置文件,那么app换成你自定的文件名,timezone换成你的配置参数就可以获取了.
2.路由:
以前听同事说laravel特别好用,当时不信,亲自试验了下,发现它的路由功能实在是强大.
默认的路由:Route::get('/','WelcomeController@index');指的是如果get方式访问根域名则会直接访问到Welcome控制器下的index方法.
如果要给路由指定多种访问方式,可用如下的方法,访问域名/aaa无论是get还是post方法都会打印出字符串,第三个可以是回调函数或者是指定控制器下的方法
如果对访问方法不做限制,可以这样写:
上面不会判断你的访问方式,任何方式都可以打印出字符串.
注:路由不要这样写'/foo',它默认已经是域名/的路径了.
如果要让路由接受url里的参数的话可以这样写
如果需要在控制器下接受路由的参数可以这样写:
Route::get('test/{appid?}','HomeController@test')
在路由后面加上参数的规则,
如果你要配置多个的话,则按这个格式再写一个,但是mysql这个键值自己定义,然后通过\DB::connection('自定义键值')->select('...')来进行操作,目前还不清楚可不可以在model里面切换数据库配置(发现了再来改).
4.引用外部扩展类
laravel5根命名空间是App.比如要引用Helper文件夹下的Helper.php,只需要在Helper.php头部定义这个类的作用域:namespaceApp\Helper;然后在要调用它的控制器头部这样调用就好,useApp\Helper\Helper;(和yii没啥区别).
5.中间件
学完路由后还在找laravel4的过滤器,网上一查才知道,原来laravel5里面用中间件代替了laravel4的路由过滤器.
在根目录运行
$middleware里的全是全局中间件,所有请求都会启用这里面配置的中间件,引用方式参考命名空间,$routeMiddleware则是路由中间件,它相比$middleware而言是一个关联数组,key为中间件的别名,value为路径,别名是这样用的:
这里middleware指向的就是别名.关于中间件只研究了前置操作和后置操作,一般来说就够了:
handle方法的request局部变量可以用来获取get里的参数,比如$request->input('name');
1.获取配置项
\Config::get('app.timezone');这样可以获取到app.php文件里的timezone的配置项的参数,看了同事的laravel4里面没有\斜杠发现会报错,所以这里要加上斜杠,或许是因为laravel5和4的目录结构和命名空间变了吧,如果不想加斜杠可以在文件头部use类名,然后斜杠就省略了,支持多个use类名1,类名2,类名3;.也可以这样获取config('app.timezone');,临时修改配置参数:\Config::set('app.timezone',123);这样设置了以后获取的timeone就会变成123.如果自定义配置文件,那么app换成你自定的文件名,timezone换成你的配置参数就可以获取了.
2.路由:
以前听同事说laravel特别好用,当时不信,亲自试验了下,发现它的路由功能实在是强大.
默认的路由:Route::get('/','WelcomeController@index');指的是如果get方式访问根域名则会直接访问到Welcome控制器下的index方法.
如果要给路由指定多种访问方式,可用如下的方法,访问域名/aaa无论是get还是post方法都会打印出字符串,第三个可以是回调函数或者是指定控制器下的方法
Route::match(['get','post'],'/aaa',function(){ //echoURL('aaa');//打印出一个url return'get或者post方法请求aaa路由'; });
如果对访问方法不做限制,可以这样写:
Route::any('foo',function(){ return'any路由方法'; });
上面不会判断你的访问方式,任何方式都可以打印出字符串.
注:路由不要这样写'/foo',它默认已经是域名/的路径了.
如果要让路由接受url里的参数的话可以这样写
Route::any('foo/{name}/{id}',function($name,$id){ return$name.$id; });
如果需要在控制器下接受路由的参数可以这样写:
Route::get('test/{appid?}','HomeController@test')
Route::get('test/{appid?}','HomeController@test'); //这样就可以在Home控制器下的test方法里这样接受参数: publicfunctiontest($appid=''){ echo$appid; }
在路由后面加上参数的规则,
Route::get('test/{appid?}','HomeController@test')->where('appid','[0-9]{2}');//这样appid只接受2位数. 可以给配置的路由起上别名 Route::get('home/box',['as'=>'test',function(){ return123; }]) 这样可以在控制器的方法里通过[code]route('test');可以打印出这个路由的地址,也可以进行重定向
redirect()->route('profile');
//路由分组 Route::group(['prefix'=>'admin'],function(){ Route::get('box',function(){ return'admin分组下的box路由'; }); Route::get('box1',function(){ return'admin分组下的box1路由'; }); Route::get('box2',function(){ return'admin分组下的box2路由'; }); });
3.配置数据库: 在config/database.php里找到mysql的配置,但是它没有写明链接参数,而是通过env()获取的,只是给了默认值而已,这些获取的值是在根目录下的.env下配置的.
'mysql'=>[
'driver'=>'mysql',
'host'=>env('DB_HOST','localhost'),
'database'=>env('DB_DATABASE','forge'),
'username'=>env('DB_USERNAME','forge'),
'password'=>env('DB_PASSWORD',''),
'charset'=>'utf8',
'collation'=>'utf8_unicode_ci',
'prefix'=>'v_',
'strict'=>false,
'port'=>'3306',
],
如果你要配置多个的话,则按这个格式再写一个,但是mysql这个键值自己定义,然后通过\DB::connection('自定义键值')->select('...')来进行操作,目前还不清楚可不可以在model里面切换数据库配置(发现了再来改).
4.引用外部扩展类
laravel5根命名空间是App.比如要引用Helper文件夹下的Helper.php,只需要在Helper.php头部定义这个类的作用域:namespaceApp\Helper;然后在要调用它的控制器头部这样调用就好,useApp\Helper\Helper;(和yii没啥区别).
5.中间件
学完路由后还在找laravel4的过滤器,网上一查才知道,原来laravel5里面用中间件代替了laravel4的路由过滤器.
在根目录运行
phpartisanmake:middlewareUserMiddleware则会在App/Http/Middleware下产生一个UserMiddleware.php文件.根routes.php同目录下有个Kernel.php文件,它是用来配置中间件的.
$middleware里的全是全局中间件,所有请求都会启用这里面配置的中间件,引用方式参考命名空间,$routeMiddleware则是路由中间件,它相比$middleware而言是一个关联数组,key为中间件的别名,value为路径,别名是这样用的:
Route::group(['prefix'=>'admin/{appid}','middleware'=>'user'],function(){
});
这里middleware指向的就是别名.关于中间件只研究了前置操作和后置操作,一般来说就够了:
//前置操作
//业务逻辑代码
return$next($request);
//后置操作
$response=$next($request);
//业务逻辑代码
return$response;
handle方法的request局部变量可以用来获取get里的参数,比如$request->input('name');
相关文章推荐
- STP的作用和操作
- php中文分词搜索
- ThinkPHP配置数据库连接公共文件与项目个性化配置合并
- Windows XP 从安装到搭建FTP
- php常用查阅
- Web_PHP_PHP客户端表单数据验证;
- 制作PHP验证码
- PHP重定向方法
- PHP session垃圾回收机制
- 利用ffmpeg进行摄像头提取视频编码为h264通过RTP发送数据到指定的rtp地址
- PHP对象在内存中的存在形式,函数传递内存方式
- Erlang otp 源码结构
- contentprovider的学习实例总结
- 利用php获取图片完整Exif信息类 获取图片详细完整信息类
- php实现手机拍照上传头像功能
- php获取文件mime类型Fileinfo等方法
- php接收二进制数据流转换成图片
- php 接收二进制流转换成图片
- php中getimagesize函数的用法
- PHP图片上传程序(完整版)