1.app('config'
)->get( $key
, $defaultValue
)
app(`config
`)指,取到整个项目下的config文件夹
get( $key
, $defaultValue
)指,在config文件夹下,寻找$key
对应的值。若没有已设定好的值,则返回$defaultValue
值。
用法示例:
function config( $key = null , $default = null ){
return app('config')->get( $key , $default ) ;
}
var expire_time = config('session.lifetime')*60 ;
2.直接为APP端的请求,返回Json结果
return response()->json( [ `key1` => `value1` , `key2` => `value2` ] ) ;
3.Model的数据子类(对应database的一张table),进行快捷查询操作
在该表内,进行查询
modelObject::where( `条件键` , `条件值` ) ;
在该表内,进行查询
并返回最靠前的结果
modelObject::where( `条件键` , `条件值` )->first() ;
4.Model的数据子类(对应database的一张table),进行创建数据操作
准备创建数据需要的一系列键值对
并创建这一条数据
$data = [`column1` => `value1` , 'column2' => `value2` , `column3` => `value3` ] ;
modelObject::create( $data ) ;
5.常规database和query语句,结合的用法
生成前半部分sql语句
拼接后半部分sql语句
常规database方法,植入数据
$sql = "insert into table_name(
a_column,
b_column,
c_column
)" ;
$sql .= "values(
a_value,
b_value,
c_value
)" ;
DB::insert( $sql ) ;
生成前半部分语句
生成后半部分语句
常规database方法,更新修改数据
$sql_2 = "update table_name set
a_column = a_value ,
b_column = b_value ,
c_column = c_value
" ;
$sql_2 .= "where
condition_key = condition_value
" ;
DB::update( $sql_2 ) ;
6.app('session'
)->put( ['key1' => 'value1' , 'key2' => 'value2']
)
这里put( $arr )
的意思还不确定。
追加?
拆开后,把每队键值对追加?
还是设置进去覆盖?
7.session()->getId()
,文档搜索不到,存疑
全部的引用代码,如下:
session(['id' => $user->id, 'latitude' => $latitude,'longitude' => $longitude]);
$sessionId = session()->getId();
此处根据解释:
1.首先,是编译器,跟踪错了————————>这个session()方法,肯定不是helper.php
里的session()方法。
2.此处的session()
方法,其实,直接指向Laravel框架下的session()
方法。
3.其实,纯就理论而言,出现session()
至少有③种可能情况:
① 自己写的
helper.php
封装类里面的。
② PHP自带的session
模块
③ Laravel自带的session
模块
原理解释如下(尝试去解释,可能仍有许多纰漏):
app( 'config' ) //实际指向的是 目录/vendor/league/flysystem/src/Config.php
app( 'session' ) //实际指向的是 目录/vendor/symfony/http-foundation/Session/Session.php
app( '已有的关键词' ) //————>这个,其实是Container利用反射,对类的实例化。
app( '已有的关键词' )
//实际指向的是 目录/vendor/laravel/framework/src/llluminate/Container/Container.php
//helper.php 里面,存放的是:全局可以使用的方法,而且是用金黄色字,直接进行调用。
config( '配置文件名.配置变量名' )
//直接执行的,是 app( 'config' ) -> get( '配置文件名.配置变量名' )方法
//最终执行的,是 /vendor/league/flysystem/src/Config.php ,这个Config.php的get( '配置文件名.配置变量名' )方法。
session()
//直接执行的,是
session( [ '键1' => '值1' , '键2' => '值2' ] )
//直接执行的,是
//Container.php中,有以下方法:
//make( $param1 , $param2 )
//getAlias( $param1 )
//getConcrete( $param1 )
// 目录/config 下所有 *.php配置文件,都被纳入到了 Config.php文件中。
//通过 app( 'config' ) -> get ( '原子配置文件名.配置变量名' ) 来进行调取访问。
//Container容器的了解
//服务容器 https://d.laravel-china.org/docs/5.3/container
//服务提供者 https://d.laravel-china.org/docs/5.3/providers
//不过 app( '模块名' ) 里,模块名和具体 .php 类文件的映射,我还是没有找到。
8.Redis 基于key-value存储的快速的缓存系统(并不是 传统意义数据库 )(是新式的数据库) 操作 Redis::set('key','value')
, Redis::expire('item','time')
,Redis::get('key')
这个我还没弄明白,
研究一下Redis
:
Redis_百度百科
9.Log工具的用法Log::useFiles($path)
,Log::info('log_info')
不太确定正确用法
这个需要稍微上网了解一下
10.app( 'path.storage' )
app( 'path.storage' )
指向何处?
‘path’是否是保留关键字?
11.Container下的 $aliases
(未解决)
Container类(位于 目录/vendor/laravel/framework/src/llluminate/Container/Container.php)
,
有这么一个属性 $aliases
(数组形式)
class Container implements ArrayAccess, ContainerContract
/**
* The registered type aliases.
*
* @var array
*/
protected $aliases = [];
}
疑问:
看上去,无疑对于理解 config ( '' )
和 session( '' )
很有用
但是,我不知道这个 $aliases
是在哪里初始化的?
$aliases
是在哪里初始化的?
$aliases
是在哪里初始化的?
$aliases
是在哪里初始化的?
12.Validator::make( $request
)
Validator::make
在以下的3篇文章里查找:
[Validator::make —— Laravel 5.3 文档 ] HTTP层 —— 验证
http://laravelacademy.org/post/5902.htmlValidator::make —— 如何使用 Laravel 框架的 validator
http://www.jianshu.com/p/27bc0eedc954\
搜索关键字 Validator::make
就好。
13.Facade(门面):app( '模块名' ) 里,模块名和具体 .php 类文件的映射
之谜,的最终解答
目录/vendor/laravel/framework/src/Illuminate/Support/Facades 下的所有 *.php (Facade子类)
比如
class Config extends Facade
{
protected static function getFacadeAccessor()
{
return 'config';
}
}
这里的 Config类 和 config
就形成了映射。
getFacadeAccessor(),在此,就像是 注册方法
。
基本思路如下:
举例如 app( session
)
app(
session
) ——————————》config文件夹下的 app.php
里,有'Session' => Illuminate\Support\Facades\Session::class
。
然后找到目录\Facades\Session
这个类,有一句return 'config';
,就此实现了互相绑定
。
再最后,参照下表:session
对应着Illuminate\Session\SessionManager
和Illuminate\Session\Store
这两个类。其中,SessionManager里,没有我们要的
get($key , $default)
,put($key)
和getId()
方法。
而在Store里,就找到了我们要的get
,put
和getId()
方法。
同理
config
在Illuminate\Config\Repository
下,我们也找到了set($key)
,get($key,$default)
方法。
Facade | Class | Service Container Binding |
---|---|---|
App | Illuminate\Foundation\Application | app |
Artisan | Illuminate\Contracts\Console\Kernel | artisan |
Auth | Illuminate\Auth\AuthManager | auth |
Blade | Illuminate\View\Compilers\BladeCompiler | blade.compiler |
Bus | Illuminate\Contracts\Bus\Dispatcher | |
Cache | Illuminate\Cache\Repository | cache |
Config | Illuminate\Config\Repository | config |
Cookie | Illuminate\Cookie\CookieJar | cookie |
Crypt | Illuminate\Encryption\Encrypter | encrypter |
DB | Illuminate\Database\DatabaseManager | db |
DB (Instance) | Illuminate\Database\Connection | |
Event | Illuminate\Events\Dispatcher | events |
File | Illuminate\Filesystem\Filesystem | files |
Gate | Illuminate\Contracts\Auth\Access\Gate | |
Hash | Illuminate\Contracts\Hashing\Hasher | hash |
Lang | Illuminate\Translation\Translator | translator |
Log | Illuminate\Log\Writer | log |
Illuminate\Mail\Mailer | mailer | |
Password | Illuminate\Auth\Passwords\PasswordBroker | auth.password |
Queue | Illuminate\Queue\QueueManager | queue |
Queue (Instance) | Illuminate\Contracts\Queue\Queue | queue |
Queue (Base Class) | Illuminate\Queue\Queue | |
Redirect | Illuminate\Routing\Redirector | redirect |
Redis | Illuminate\Redis\Database | redis |
Request | Illuminate\Http\Request | request |
Response | Illuminate\Contracts\Routing\ResponseFactory | |
Route | Illuminate\Routing\Router | router |
Schema | Illuminate\Database\Schema\Blueprint | |
Session | Illuminate\Session\SessionManager | session |
Session (Instance) | Illuminate\Session\Store | |
Storage | Illuminate\Contracts\Filesystem\Factory | filesystem |
URL | Illuminate\Routing\UrlGenerator | url |
Validator | Illuminate\Validation\Factory | validator |
Validator | (Instance) Illuminate\Validation\Validator | |
View | Illuminate\View\Factory | view |
View | (Instance) Illuminate\View\View |
14.需要注意的几个词:rescue,rescure,recure,rescursion,iteration,contacts,contracts
15.关于初学Contracts,的一点点参考
以下有两个常用协议,是和Contracts相关的:
Illuminate\Contracts\View\Factory View::make()
Illuminate\Contracts\Validation\Factory Validator::make()
16.关于命令$ composer create-project --prefer-dist laravel/laravel directory
1.composer 不用说
2.create-project 创建一个项目
3.–prefer-dist 直接拷贝下来已解压的文件,而不是clone下一个压缩包
4.laravel/laravel GitHub上面的项目名。格式为 公司名称/项目名称
5.directory 指定某个目录,为新项目创建后的存放位置
17.简述Laravel的Session原理
先看第一篇