Switch language
zh
Switch theme
Light
  • 一道小题--获取本月有多少天

    $today = "2018-8-8"; echo date('t',strtotime($today));// t 为本月天数, 28-31之间 // date() 函数可以直接得出, 避免了 复杂的判断 闰年,几月 等
  • 使用-gregwar-captcha-生成固定字符的验证码

    使用 gregwar/captcha 可以方便地生成验证码图片(直接输出或 base64) $builder = new CaptchaBuilder; $builder->build(); $text = $builder->getPhrase(); // 验证码文本 $pic = $builder->inline();// base64 captcha 现如今在 laravel 本地环境中(非 production), 不想每次生成新的要去图片查验的验证码, 查看文档, 说是 “直接使用 $builder = new CaptchaBuilder('12345')”, 其中的 12345 (phrase) 必须为 string 但是这样再使用 $builder->inline() 会报错, 无法生成验证码图片 经过查看 CaptchaBuilder.php 类文件, 比较两种方式有什么差别() 可以发现, 随机生成验证码我多走了一步 $builder->build(), 而这正是通过 GD 库来绘制图片的步骤. 问题的原因找到了 看完 build() 方法会看到 return $this, 于是可以通过 $builder = $builder->build() 来获取最新的实例, 接下来就可以使用 inline() 方法了 ps: 其实就算没有 return $this (不使用 $builder = $builder->build() 而用 $builder->build() ) 也可以正常返回 base64 图片, 因为图片内容在方法中传回给实例的属性了, 在 inline() 方法中会调到到这些属性
  • 如何减少-if---else----甚至-switch-的使用

    需求: $str = '1,3,5'; // 变成 'abc,ghi,mno' $arr = [ [ 'id'=>1, 'name'=>'abc' ], [ 'id'=>2, 'name'=>'def' ], [ 'id'=>3, 'name'=>'ghi' ], [ 'id'=>4, 'name'=>'jkl' ], [ 'id'=>5, 'name'=>'mno' ], ]; 使用 if..else 或 switch 方法可以完成 现考虑不使用这两种方式作法: 思路: 把下面的 id 值作为键, name 值作为值, 重新构成一个数组 $arr2, 从 $str 中获取数字 如1, 使用 $arr2[‘1’] 来获取对应的 name php解法: // 1. 把当前 $arr 转成 目标数组 $arr2 $arr2 = []; foreach ($arr as $v) { $arr2[$v['id']] = $v['name']; } $str_to_arr = implode(',', $str);// [1,3,5] $str_to_arr = array_map(function(value){ return $arr2['value']; }) $str2 = join(',', $str_to_arr); JS 解法: js 只支持索引数组, 不支持关联数组, 但是 ES6 的 Map 对象支持任意的键或值 var str = '1,3,5'; var data = [ { id: 1, name: '中国' }, { id: 2, name: '美国' }, { id: 3, name: '日本' }, { id: 4, name: '韩国' }, { id: 5, name: '俄国' } ]; console.
  • 帝国cms(v7-5)-在内容模板中使用-truetime-字段

    truetime 是真实发布时间, 也就是后台 mysql 执行 insert 的时间; lastdotime 是真实更新时间, 也就是后台 mysql 执行 update 的时间; newstime 是发布时间, 由用户自定义, 在新增信息时, 表单中自行填写; // 在模板中直接使用 $nvainfor 数组进行调用, 比如: <br>navinfor[id]-<?=$navinfor[id]?> <br>navinfor[content]-<?=$navinfor[content]?> <br>navinfor[newstime]-<?=$navinfor[newstime]?> <br>navinfor[truetime]-<?=$navinfor[truetime]?> <br>navinfor[lastdotime]-<?=$navinfor[lastdotime]?> ps: 使用 $navinfor 可以访问当前记录(1条)的全部字段信息, 使用 [!–id–] 方式只能访问到部分信息 见: http://www.phome.net/doc/manual/template/ 原文见: http://www.phome.net/doc/manual/template/html/other.html#q17
  • 帝国cms-1条信息如何实现多个内容页--

    需要如图: ‘曲线救国’ 路线: 依然是一个内容页模板, 但是 聚集三个页面的内容, 比如分成三个 div, 通过js 默认第一个 div 显示, 另两个不显示, 然后点击哪个 div, 哪个 div 显示, 其它的隐藏
  • 不间断空格-none-breaking-space-(-u00a0)

    从网上复制的一些文本可能含有特殊字符, 不间断空格(unicode 编码为 \u00a0)就是一种, 效果与 ’ ’ 普通空格类似, 但有不同. 不同: 对英文单词间使用普通空格, 会自动换行; 使用不间断空格连接的单词会被认为是一个单词而直接全部换到下一行, 这在 html 也是同样的效果. 在 php 中使用 普通空格替换 不间断空格的方式 $str = "a a a"; $str = str_replace(chr( 194 ) . chr( 160 ), " ", $str); 参考自stackoverflow
  • vue-router-push-后页面位置不是在顶部

    原文见: https://blog.csdn.net/M_SSY/article/details/82850517 解决办法: 在 router/index.js 中 new router 时, 加入如下代码 scrollBehavior(to, from, savedPosition) { return {x: 0, y: 0 } }
  • tp5-在模板(或php文件中)中获取当前的控制器名

  • tp5-1-和-laravel-中的-facade-门面

    facade 的作用是把 类(动态)方法 当作 静态方法 使用; 简称 静态代理 <?php class Demo { public function index(){ echo 'hello world'; // echo __METHOD__; } } class DemoFacade { public static function __callStatic($name, $arguments) { $demo = new Demo(); $demo->$name(); } } DemoFacade::index();// hello world
  • tp5-1-的依赖注入,-服务容器,-facade

    在一个类中 实例化另外一个类, 就是依赖性强, 耦合度高, 在 tp5.1 中 可使用 依赖注入 来解耦 class A { public function hello(){ echo 'hello'; } } class B { public function sayHello(){ $a = new A(); $a->hello(); } } class C { // 依赖注入的用法 public function sayHello(A $a){ $a->hello(); } } 进一步使用 依赖容器 container 来解耦 容器就是一个装有各种类的对象的仓库, 然后通过 依赖容器 来实现对象的调用 最后还可以使用 facade 封装各个类(对象) 的方法, 形成对外的统一方法, 从而使用者(开发者) 无需关心调用的是哪个类的哪个方法, ( 而统一使用的是 facade 类的方法)
🍀