阅读生产环境的源代码的记录

5 篇文章 0 订阅
2 篇文章 0 订阅

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.html

Validator::make —— 如何使用 Laravel 框架的 validator
http://www.jianshu.com/p/27bc0eedc954\

Validator::make —— Laravel框架表单验证详解

搜索关键字 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\SessionManagerIlluminate\Session\Store 这两个类。

其中,SessionManager里,没有我们要的get($key , $default)put($key)getId()方法。
而在Store里,就找到了我们要的getputgetId()方法。

同理

config
Illuminate\Config\Repository 下,我们也找到了set($key)get($key,$default)方法。

FacadeClassService Container Binding
AppIlluminate\Foundation\Applicationapp
ArtisanIlluminate\Contracts\Console\Kernelartisan
AuthIlluminate\Auth\AuthManagerauth
BladeIlluminate\View\Compilers\BladeCompilerblade.compiler
BusIlluminate\Contracts\Bus\Dispatcher
CacheIlluminate\Cache\Repositorycache
ConfigIlluminate\Config\Repositoryconfig
CookieIlluminate\Cookie\CookieJarcookie
CryptIlluminate\Encryption\Encrypterencrypter
DBIlluminate\Database\DatabaseManagerdb
DB (Instance)Illuminate\Database\Connection
EventIlluminate\Events\Dispatcherevents
FileIlluminate\Filesystem\Filesystemfiles
GateIlluminate\Contracts\Auth\Access\Gate
HashIlluminate\Contracts\Hashing\Hasherhash
LangIlluminate\Translation\Translatortranslator
LogIlluminate\Log\Writerlog
MailIlluminate\Mail\Mailermailer
PasswordIlluminate\Auth\Passwords\PasswordBrokerauth.password
QueueIlluminate\Queue\QueueManagerqueue
Queue (Instance)Illuminate\Contracts\Queue\Queuequeue
Queue (Base Class)Illuminate\Queue\Queue
RedirectIlluminate\Routing\Redirectorredirect
RedisIlluminate\Redis\Databaseredis
RequestIlluminate\Http\Requestrequest
ResponseIlluminate\Contracts\Routing\ResponseFactory
RouteIlluminate\Routing\Routerrouter
SchemaIlluminate\Database\Schema\Blueprint
SessionIlluminate\Session\SessionManagersession
Session (Instance)Illuminate\Session\Store
StorageIlluminate\Contracts\Filesystem\Factoryfilesystem
URLIlluminate\Routing\UrlGeneratorurl
ValidatorIlluminate\Validation\Factoryvalidator
Validator(Instance) Illuminate\Validation\Validator
ViewIlluminate\View\Factoryview
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原理

先看第一篇

Laravel学习笔记之Session源码解析(上)

18.Symfony是什么?与Laravel的关系如何?\

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将血压计源代码投入生产,需要确保代码的可靠性和稳定性。以下是血压计源代码投入生产的步骤和注意事项。 首先,确认代码已经完整且不缺任何功能模块,并且已经经过了充分的测试和调试,确保没有bug。可以通过使用适当的集成开发环境(IDE)或者调试工具来进行代码的测试和调试。在此过程中,应该模拟真实的血压数据、用户操作和异常情况,以确保代码在各种情况下都能正常工作,不会导致系统崩溃或产生错误的数据。 其次,要确保代码的可读性和可维护性。对于投入生产的代码来说,代码质量非常重要。代码的变量命名和函数注释应该简明扼要、有意义,并且符合编码规范。代码应该被分为合适的模块和函数,减少代码的重复和冗余。此外,还应该编写适当的单元测试和集成测试来验证代码的正确性。 接下来,需要将代码部署到目标血压计设备上。这可能涉及将代码编译成可执行程序,并在血压计设备上进行安装和配置。在此过程中,要确保设备硬件和操作系统的兼容性,并遵循设备制造商提供的部署指南和标准操作规程。 在代码部署之后,应该进行一段时间的试运行和监测。通过监测血压计的性能、稳定性和准确性,以及记录用户反馈和系统日志,可以及时发现和解决可能出现的问题。如果有需要,可以对代码进行进一步的优化和改进,以提高系统的性能和用户体验。 最后,投入生产的血压计代码应该进行定期的维护和更新。随着时间的推移,可能会出现新的bug或者需求变化,因此需要及时修复和更新代码。同时,还需要密切关注血压计设备的市场动态和用户反馈,进行针对性的改进和升级。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值