小花花 的个人动态
  • 小花花 发布了文章
    1个月前

    ThinkPHP6 容器和依赖注入

    ThinkPHP 使用容器来更方便的管理类依赖及运行依赖注入,新版的容器支持 PSR-11 规范。容器类的工作由 think\Container 类完成,但大多
  • 小花花 发布了文章
    1个月前

    用超人的故事讲解 IoC(控制反转) 和 DI(依赖注入)

    容器,字面上理解就是装东西的东西。常见的变量、对象属性等都可以算是容器。一个容器能够装什么,全部取决于你对该容器的定义。当然,有这样一种容器,它存放的不是文本、数值,而是对象、对象的描述(类、接口)或
  • 小花花 发布了文章
    1个月前

    为什么你应该使用 Repository

    Repository 模式为了保持代码的整洁性和可读性,使用 Repository Pattern 是非常有用的。事实上,我们也不必仅仅为了使用这个特别的设计模式去使用 Laravel,然而在下面的场
  • 小花花 发布了文章
    1个月前

    理解依赖注入与控制反转

    什么是依赖没有你我就活不下去,那么,你就是我的依赖。 说白了就是:不是我自身的,却是我需要的,都是我所依赖的。一切需要外部提供的,都是需要进行依赖注入的。我们用代码来描述一下:<?phpclas
  • 小花花 发布了文章
    1个月前

    php 中 call_user_func 与 call_user_func_array 的使用

    call_user_func()是利用回调函数处理字符串,call_user_func_array是利用回调函数处理数组。// 1、 调用自定义函数function test($a, $b){
  • 小花花 回答了问题
    1个月前

    想要开发自己的PHP框架需要那些知识储备?

    作者:安正超
    链接:https://www.zhihu.com/question/26635323/answer/33812516
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
     

    很多人当听到别人要开发框架的时候第一想法就是,又重复造轮子。
    其实造轮子的过程是一个快速积累知识的过程,能较快的发现自己的不足,以及学到一些自己未发现的知识点。所以建议在有一定PHP基础的情况下,都去尝试完成一个五脏俱全的基本框架吧。

    那么下面分享一下我之前造轮子的过程吧:

    1. 尝试试用一个以上的框架,看完一遍使用文档,目的在于了解它都有哪些功能,发现他的一些比较好的用法设计;
    2. 在看文档的同时并行的思考这一部分的实现原理,如果想不明白则记下来或者上Github去看源码(当然在不熟悉代码结构的情况下可能很难找,所以我建议还是先记下来);
    3. 看它的项目结构,同时思考这个结构的意义,比如现在大部分框架都把入口文件与静态资源单独放到public目录里与其它目录分开的原因是什么;
    4. 尝试看一遍源码的运行流程,从入口到输出,以及错误处理,模板引擎,配置等多个点了解一下(如果基础允许的话,在这过程中解决上面记下来的疑点吧);
    5. 开始自己实现吧,先写一个大概的功能列表,把你要实现的点写出来;
    6. 然后思考如果组织代码结构,在没有太多实践经验的情况下就按你最熟悉的方式组织吧(先实现再优化);
    7. 先跑通基本的hello world!;
    8. 一点点加功能吧;
    9. 发现不足,改进它;

    这里在加功能的时候,尽量自己实现所有的能实现的组件,比如文件上传,错误处理等等,毕竟目的是实习知识。
    那么这过程其实走下来对于基础稍差的人来说可能会特别不顺利,那么没关系,遇到哪一个点卡住,先解决你对这个点的问题,快速补充知识再回来继续。

  • 小花花 回答了问题
    2个月前

    thinkphp5怎么实现全站静态化啊?

    /**
     * 模板输出重写方法
     * @access protected
     * @param  boolean $isStatic 是否保存为静态文件
     * @param  string $template 模板文件名
     * @param  array  $vars     模板输出变量
     * @param  array  $replace  模板替换
     * @param  array  $config   模板参数
     * @return mixed
     */
    private function staticFetch($isStatic=false,$template = '', $vars = [], $replace = [], $config = [])
    {
        $HTML = $this->fetch($template, $vars, $replace, $config);//获得页面HTML代码
        if ($isStatic){//判断是否需要保存为静态页
            $thisModule=request()->module();//获取模块
            $thisController=request()->controller();//获取控制器
            $thisAction=request()->action();//获取方法
            $new_file = "{$thisModule}/{$thisController}";
            if(!file_exists($new_file)){
                //检查是否有该文件夹,如果没有就创建,并给予最高权限
                mkdir($new_file, 0777,true);
            }
            $new_file.="/{$thisAction}.".config('default_return_type');
            file_put_contents($new_file,$HTML);//生成静态页
        }
        return $HTML;
    }
  • 小花花 提出了问题
    2个月前
  • 小花花 发布了文章
    2个月前

    JavaScript闭包

    函数作为返回值高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。我们来实现一个对 Array 的求和。通常情况下,求和的函数是这样定义的:function sum(a
  • 小花花 发布了文章
    2个月前

    JavaScript的变量作用域与解构赋值

    在 JavaScript 中,用 var 申明的变量实际上是有作用域的。如果一个变量在函数体内部申明,则该变量的作用域为整个函数体,在函数体外不可引用该变量:'use strict
  • 小花花 发布了文章
    2个月前

    JavaScript面向对象 class继承

    在上面的章节中我们看到了 JavaScript 的对象模型是基于原型实现的,特点是简单,缺点是理解起来比传统的类-实例模型要困难,最大的缺点是继承的实现需要编写大量代码,并且需要正确实现原型链。有没有
  • 小花花 发布了文章
    2个月前

    JavaScript 原型继承

    在传统的基于 Class 的语言如 Java、C++ 中,继承的本质是扩展一个已有的 Class,并生成新的 Subclass。由于这类语言严格区分类和实例,继承实际上是类型的扩展。但是,JavaSc
  • 小花花 发布了文章
    2个月前

    JavaScript面向对象 - 创建对象

    JavaScript 对每个创建的对象都会设置一个原型,指向它的原型对象。当我们用 obj.xxx 访问一个对象的属性时,JavaScript 引擎先在当前对象上查找该属性,如果没
  • 小花花 发布了文章
    2个月前

    JavaScript 面向对象编程

    JavaScript 的所有数据都可以看成对象,那是不是我们已经在使用面向对象编程了呢?当然不是。如果我们只使用 Number、Array、string 以及基本的 {.
  • 小花花 回答了问题
    2个月前

    如何不因为请求太多而且显示pending而导致页面卡顿?

    你需要先设置下页面状态,然后进行异步请求,请求未返回时显示正在加载,返回时就显示正确的数据了,这里的异步可以用promise实现

  • 小花花 发布了文章
    2个月前

    JavaScript异步错误处理

    编写 JavaScript 代码时,我们要时刻牢记,JavaScript 引擎是一个事件驱动的执行引擎,代码总是以单线程执行,而回调函数的执行需要等到下一个满足条件的事件出现后,才会被执行。例如,se
  • 小花花 发布了文章
    2个月前

    Laravel中如何使用Presenter模式

    若将显示逻辑都写在 View,会造成 View 代码臃肿而难以维护,基于 SOLID 原则,应该使用 Presenter 模式辅助 View,将相关的显示逻辑封装在不同的 Presenter ,方便中
  • 小花花 发布了文章
    2个月前

    Laravel中如何使用 Service 模式

    若将数据库逻辑都写在 Controller 里,会造成 Controller 代码的臃肿难以维护,基于 SOLID 原则,我们应该使用 Service 模式辅助 Controlle
最近访客
  • 董俊俊
    董俊俊 6天前
  • shadowhung
    sha 2个月前