自己动手写一个PHP组件

花了两天时间把《Modern PHP》看了一遍,深有感触~~~ 现在看看以前写的代码简直就是一坨屎(没看这本书之前最多是半坨屎23333)。代码风格、组件思想、包管理等等等等,无颜以对写的代码。本来也打算再次重构一些项目的,现在这种愿望更强了。。好了,废话不多说,开始着手写一个IMDb组件,这个组件用于指定一个title值,便可返回该部电影的详细信息。

事实上我就是跟着《Modern PHP》的Create-PHP-Components章节一步一步做的。

目录结构

这里请参考 https://github.com/thephpleague/skeleton 非常详细 值得说明的是,准备写的IMDb组件没有tests

composer.json

这是IMDb的composer.json, 并不是很完善。也是参考上述示例项目的

{
    "name": "xu42/imdb",
    "description": "Crawl IMDb movie rating, content rating, release date, poster, presentation, director, actor, duration and other information",
    "keywords": [
        "xu42",
        "imdb"
    ],
    "homepage": "https://github.com/xu42/IMDb",
    "license": "MIT",
    "authors": [
        {
            "name": "xu42",
            "homepage": "http://xu42.cn",
            "role": "Developer"
        }
    ],
    "require": {
        "php" : "~5.5|~7.0"
    },
    "autoload": {
        "psr-4": {
            "Xu42\\Imdb\\": "src"
        }
    }
}

功能实现

这个组件的功能很早就实现了,但之前写的就是一坨屎, 改之后是这样的, 虽然还不是很优雅,但相比之下,还是看着舒服多了。

  1. 命名空间的问题,不应与已知的重复,这个可以到 packagist 搜一下。
  2. 代码规范的问题,推荐PHP编码规范(中文版) ,英文好的话推荐直接看原版。 之后,简单的自己在本地测试一下(并不是真正意义上的测试),编写一个test.php
<?php
require_once './vender/autoload.php';
$oneTitle = new \Xu42\Imdb\OneTitle();
print_r($oneTitle->getMsgOfOneTitle('tt0111161'));

然后测试

$ composer install 
$ php test.php

( ⊙o⊙ )哇,测试没有问题。

代码托管 & 提交组件

这一步也没什么问题,需要注意的是,需要给当前版本打tag

$ git push origin 1.0.0

packagist , 直接使用Github账号授权登陆。 点击Submit,然后在表单中填入Github项目地址,再点Check,之后会提示你本项目没有自动更新,跟着引导去Github项目设置一下Webhooks就好了。

之后,在任意一台电脑执行composer require xu42/imdb就可以引入啦,It’s cool!

晚些再把大学英语四六级也做成组件, Cool!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python中文社区

Python微博移动端爬虫实例

專 欄 ❈ 作者:麦艳涛,挖掘机小王子,数据分析爱好者。 ❈ 本文简要讲述用Python爬取微博移动端数据的方法。可以看一下Robots协议。另外尽量不要爬取...

2615
来自专栏企鹅号快讯

Python微博移动端爬虫实例

❈ 作者:麦艳涛,挖掘机小王子,数据分析爱好者。 ❈ 本文简要讲述用Python爬取微博移动端数据的方法。可以看一下Robots协议。另外尽量不要爬取太快。如果...

2149
来自专栏小程序解决方案的专栏

3 元购买 Wafer1 指南

进入微信公众平台,点击右上角的【立即注册】,按照流程注册小程序账号。

9930
来自专栏恰童鞋骚年

《大型网站技术架构》读书笔记三:大型网站核心架构要素

此篇已收录至《大型网站技术架构》读书笔记系列目录贴,点击访问该目录可获取更多内容。

742
来自专栏地方网络工作室的专栏

客制化 GH60 XD60 像 Poker 一样的 60% 机械键盘 (1)设计键盘

客制化 GH60 XD60 像 Poker 一样的 60% 机械键盘 (1)设计键盘 首先呢,我喜欢樱桃茶轴的键盘。但是由于对方向键的依赖,一直无法接受 60%...

3798
来自专栏JAVA高级架构

如何设计一个麻雀般的微型分布式架构?

设计该系统初衷是基于描绘业务(或机器集群)存储模型,分析代理缓存服务器磁盘存储与回源率的关系。系统意义是在腾讯云成本优化过程中,量化指导机房设备扩容。前半部分是...

1093
来自专栏Java架构师历程

如何进行微服务的API测试

作为构建复杂系统的架构,微服务在开发社区中获得了巨大的吸引力。虽然人们开始明白它并不是解决所有应用程序架构问题的灵丹妙药,但是分享与依赖关系和扩展相关的挑战的应...

9072
来自专栏京东技术

京东JMAC,完美解决移动自动化测试的常见问题

提到移动端自动化测试就不得不提及目前几大开源的移动端自动化测试工具/框架,主流工具有Appium、Athrun、Robotium、UiAutomator、Mon...

1302
来自专栏小程序

【云加小程序2018年4月】更新日志

1844
来自专栏iOSDevLog

应用程序内购买教程:入门

更新说明:Pietro Rea为Xcode 10,Swift 4.2和iOS 11/12更新了本教程。Ray Wenderlich写了原文。

2832

扫码关注云+社区

领取腾讯云代金券