destoon's design 一 oop pop and namspace

栏目: 后端 · 前端 · 发布时间: 5年前

内容简介:在这篇文章名字中使用优秀是经过我这两天研究后决定的。原因是我在使用了这么多年的正如我在一开始入门编程时,仅会用

在这篇文章名字中使用优秀是经过我这两天研究后决定的。

原因是我在使用了这么多年的 oop 后再见到 function 的惊讶。

正如我在一开始入门编程时,仅会用 html 后来半推半就的了解了点 asp ,第一次看到别人的 asp 代码用了函数定义一样。

我也不知道文章会如何分,在未完成之前就随手记吧。

通过对入口文件分析来说说 oop函数式 的不同

  1. 大部分的 oop 习惯于使用单入口,因为单入口更加方便处理,使用基类进行处理让系统更加完整,可以通过基类进行解耦,不用过多关注业务逻辑之外的架构。
  2. 在看到 destoon 后让我想到了 discuz! ,当年在使用论坛程序的时候我们就在用了这样的方式。 总结特点如下:
    命名空间
    
  3. 暂且不说 discuz! 单入口解决方案。我这里研究了下 destoon 的分站解决方案。 destoon 的分站首页和主站首页用了相同的入口文件

    1. 入口文件引入的公共文件 common.inc.php 定义几个变量 $city_domain = $city_template = $city_sitename = '';
    2. 如果开启了分站 $DT['city'] 为0 未开启 为1 开启 这里使用了缓存 导致比较难以明确 $DT['city'] 的来源 具体可以通过查看 cache_module() 方法来确认。
    3. 如果开启分站则加载分站处理公共脚本 city.inc.php ;
    4. 通过匹配域名 getenv('http_host') 来获取到网站访问域名,然后去 city 表中查询域名对应的分站,如果存在则,将表查询的 id 赋给 cityid ,来确定有分站。
    5. 通过 cityid 再次得到分站信息然后赋值

      $c = $db->get_one("SELECT * FROM {$DT_PRE}city WHERE areaid=$cityid");
      $city_name = $c['name'];
      $city_domain = $c['domain'];
      $city_template = $c['template'];
      
    6. 得到了城市分站相关信息模板设置,然后就是堵数据处理模板了。

  4. 通过3的分析,再次让我感受到了 destoon 作者设计的苦心。我们在用 oop 在基类中的构造方法中也是完成这一套逻辑。同样跟 oop 对比后,我们发现我们对于 oop 的认同感增强了,而对于函数式这种写法也更加排斥。 因为你不知道某个变量来自于哪里,尤其是我们用 extract($array) 后的崩溃感。

命名空间与函数和变量隔离

  1. 在函数式中我们没法定义两个相同名称的 funciton
  2. oop 中我们可以在不同的类中定义相同名称的 function ,但是在公共函数文件中仍然跟函数式一样无法定义相同名称的 function
  3. 命名空间的出现让我们避免了这个问题。当我们对一个 php 语言文件顶部增加 namespace Foo; 的时候,我们就将这个文件划分到了 Foo 空间下。如下面对的代码.

    namespace Foo;
    function base64_urlSafeEcode($data){
        $find = ['+', '/'];
        $replace = ['-', '_'];
        return str_replace($find, $replace, base64_encode($data));
    }
    

    这个时候我们调用 base64_urlSafeEcode() 的时候需要使用 \Foo\base64_urlSafeEcode() ;当然可以将这个方法明明为 base64_encode() 。之所以定义不同名称是为了更好让人理解,这个 base64 编码方法是 url 安全 的。


以上所述就是小编给大家介绍的《destoon's design 一 oop pop and namspace》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

高效团队开发

高效团队开发

[日] 池田尚史、[日] 藤仓和明、[日] 井上史彰 / 严圣逸 / 人民邮电出版社 / 2015-7 / 49.00

本书以团队开发中所必需的工具的导入方法和使用方法为核心,对团队开发的整体结构进行概括性的说明。内容涉及团队开发中发生的问题、版本管理系统、缺陷管理系统、持续集成、持续交付以及回归测试,并且对“为什么用那个工具”“为什么要这样使用”等开发现场常有的问题进行举例说明。 本书适合初次接手开发团队的项目经理,计划开始新项目的项目经理、Scrum Master,以及现有项目中返工、延期问题频发的开发人......一起来看看 《高效团队开发》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

html转js在线工具
html转js在线工具

html转js在线工具