沙渺

沙渺
第 7034 位会员
注册于 4年前
活跃于 2年前

软件开发工程师 @ 腾讯无线大连研发中心


Make developers great again.
最近发表的话题
最近发表的评论
  • Laravel 5 前端预设 Bootstrap 4 at 3年前

    breaking changes 是“破坏性变更”啊!翻译成“突破性的改变”意思全反了

  • 大神们,来讨论下 $a+$a++ 运算的结果 at 3年前

    @王东哲 指的是一条语句之内,各个部分的执行顺序。例如 $b = $a + $a++; 这一条语句就有4个行为:

    1. +左侧的值:取$a
    2. +右侧的值:取$a,之后$a自增
    3. 运算
    4. $b赋值。

    其中只有3和4的顺序是确定的,1、2的顺序不能保证。

  • 大神们,来讨论下 $a+$a++ 运算的结果 at 3年前

    简而言之,最终的结论:

    1. 一条语句不应当同时 ①取变量值 ②对变量产生副作用(更改、赋值等)。
    2. 只有极为简单的情况下可以容忍,例如$r = $a++;。但这个实践仍然不良,最好改掉。
  • 大神们,来讨论下 $a+$a++ 运算的结果 at 3年前
    <?php // 为了消除对 $a 反复赋值的影响,稍微改写一下楼主位的程序
    $a = 1; $b = ($a + $a++);      echo $b;
    $c = 1; $d = ($c + $c + $c++); echo $d;

    这就是典型的UB(undefined behavior,未定义行为)。php手册明确指出

    Operator precedence and associativity only determine how expressions are grouped, they do not specify an order of evaluation. PHP does not (in the general case) specify in which order an expression is evaluated and code that assumes a specific order of evaluation should be avoided, because the behavior can change between versions of PHP or depending on the surrounding code.

    简而言之:如果同一个语句中“求值”与“修改”同时出现,那么其执行顺序没有任何保证。

    所以对于上边的程序,$b 得 2 或 3 都是对的,$d 得 3 或 4 都是对的。

    事实上这个程序在不同的PHP版本下,就可以测试出不同的结果:
    (以下结果来自于 http://sandbox.onlinephpfunctions.com/

    • 对于 PHP 7.1.0 ,$b 得 3 ,$d 得 3
    • 对于 PHP 4.4.9 ,$b 得 2 ,$d 得 3
  • Laravel 5.5 中文文档翻译完成(包含文档离线下载地址) at 3年前

    @Summer 5.5版文档的 views#view-composers 需要比较大的修正,已经提交了 github PR 麻烦有时间审一下

  • PHP 身份证精确匹配验证 at 3年前

    @KevinYang 地区码确实是会变的。行政区划不推荐随便的hard-code在代码里,而推荐拆分成独立的文件,从而便于靠软件包版本升级来进行变更。

  • 为什么必须使用 Homestead 来开发 Laravel 应用? at 3年前

    正确看待artisan serve或自搭集成环境的玩具性质。玩具不能承担项目开发(实际业务、整项目实战学习)的大任,但对不形成项目的小任务(安利他人、原型演示、学习个别知识点、尝试个别新软件包)也很方便。

    一旦形成项目,立刻停止偷懒,这是最重要的。

  • 关于 Laravel 项目里的 .env 文件的使用 at 4年前

    @韩广超 发布肯定需要另行拷贝.env文件。或者人肉,或者依赖发布(持续集成)工具。

    以前上班时做过jenkins实现同一laravel项目、多个运行环境的持续部署(开发、测试、生产环境)。每一个环境的.env文件,都只存储在jenkins运行用机,不存储在版本库里。jenkins会在运行任务时,将任务对应的.env文件合并到代码中。

    .env文件和代码分离,对于生产性质的应用是很重要的。在这个“github挖掘登录名/密码/key”不再是新鲜新闻的时代,我相信没有任何公司愿意承担由于开发者不慎,造成具体敏感信息泄露的风险。