PHP 扩展包实战教程 - 作品分享

作品简介

利用豆瓣提供的 API 获取书籍基本信息

作品链接

https://github.com/Littlesqx/douban-book

心得体会

课程其实留白得挺好 虽然不是很高深 但是有很多可以扩展学习的地方

最大的收获是学习到了几个好用的工具 Travis-CI 和 StyleCI 的初步使用, 也终于终于开始写单元测试...

还有怎么 不业余 地布局和发布扩展包 或者说进行一个开源项目

总之要学的东西还有很多啦

谢谢超哥!

癞蛤蟆想吃炖大鹅
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 6

很棒哦!刚才看了一下代码,设计还挺不错,不过 “A book SDK.” 有点太简单了,尽量加上关键字以便于更多需要的人能找到它。

另外,关于开源可以参考我之前的演讲内容:博客:手把手教你如何构建一个优秀的开源项目

加油!:+1:

5年前 评论

@overtrue 好的 谢谢

5年前 评论

$params = \json_decode($params, true); 为什么要加\,感觉没必要

class BookFactory
{
    /**
     * make a book entity.
     *
     * @param $params
     *
     * @return Book|null
     */
    public static function make($params): ? Book
    {
        $params = \json_decode($params, true);
        if (!isset($params['title'])) {
            return null;
        }
        $book = new Book();

        return $book->setIsbn($params['isbn13'])
            ->setTitle($params['title'])
            ->setSubtitle($params['subtitle'])
            ->setAuthor($params['author'])
            ->setAuthorIntro($params['author_intro'])
            ->setPrice($params['price'])
            ->setCatalog($params['catalog'])
            ->setPublicationDate($params['pubdate'])
            ->setPublisher($params['publisher'])
            ->setSummary($params['summary'])
            ->setCover($params['images']['large'])
            ->setTags(array_column($params['tags'], 'name'));
    }
}
5年前 评论

如果您想在方法中返回 null,您可以考虑抛出一个异常或返回一个特例(Special Case)对象,返回 null 会对调用者增加额外的工作量,看了一下您调用 make() 的地方并没有去判断返回 null 的情况。。。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!