PHP 组件化实践

2019-05-28 19:27:45 +08:00
 xiangdong1987

最近学习了 go 语言,非常钦佩它从语言上对于 Coder 的友好化,对于它的包规划也感到很用心,其实做为一个 phper,我们 php 也是有很好的工具的,那就是 composer,它同样起到了规范化和组件化的作用。一个人的作用总归是有限的,只有集合广大人民的力量才是正道。

实践过程

  1. 组件化什么?
    • 我一直有个想法做一套后台组件,能快速拼装后台功能,对于一些开源组件,内部实现复杂,自定义困难。所以想自己实现一套可复用的后台组件。 方便以后的开发。
  2. 如何实现组件化?
    • 对于 php 来说,composer 是不二选择,规范的定义,简单的维护,版本控制,大大减少心理负担。
  3. 如何定义自己的 composer 组件?
    1. 实现自己的组件

    2. 上传 github

    3. 定义 composer.json

      {
        "name": "xdd/x-template",    //包名  必须是二级的
        "description": "后台模板组件",
        "license": "MIT",
        "authors": [
          {
            "name": "xdd",
            "email": "xiangdong198719@gmail.com"
          }
        ],
        "autoload": {
          "psr-4": {
            "Component\\": "src/component",    //命名空间目录
            "Interfaces\\": "src/interface"          //命名空间目录
          }
        },
        "require": {}
      }
      
    4. 在 packagist 检出自己的 github 就完成了一个自己的 composer

    5. composer 版本是根据 github 的 tag 来创建的只需要给 github 打版本标签即可。

根据上面的步骤可以轻松完成组件化 我实现的后台组件模块化 https://github.com/xiangdong1987/xTemplate 希望大家来贡献代码

总结

作为一个特别懒的程序员,如何把一个复杂重复的工作,做的有趣和简单是我唯一能促使我不断写代码的唯一动力。

5376 次点击
所在节点    PHP
21 条回复
asdcs16
2019-06-19 08:54:40 +08:00
@xiangdong1987 基于 symfony 的 drupal8 已经实现了你说的,各种模块灵活组合,相互依赖作用,可以形成复杂的功能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/568510

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX