创建编写器包



我正在尝试创建一个作曲家包&我了解创建作曲家的基本工作流程。在src目录下自动加载和创建类。

我有一个小的编程误解是,几乎所有我正在阅读的其他包都有接口和实现它们的类。我不明白在这种情况下需要接口,也不明白我们为什么需要接口。我从来没有使用过接口,或者我不确定我是否理解它的一般用例。如果有人能帮我理解的话就太好了。

旁边的另一个问题,我在上下文的作曲家是我如何测试/运行一个作曲家项目,而我创建它?

除此之外,我所指的项目在src中有一个command目录,我不理解这个或它的用例的意义。我猜它与symfony php控制台命令有关。

也有一个bin目录在源代码,现在是如何有用的。

对不起,如果我是天真的在这里,但我只是试图了解哪些组件落在哪里,为什么是这样的。我在网上找不到一个作曲家教程,过去创建composer.json

你一次问了很多问题,但我至少会尝试解决接口问题,因为我相信这是最重要的。

接口主要用于依赖注入。他们定义方法而不关心方法是如何实现的。一个类可以依赖于一个接口而不是一个实际的(具体的)类,这样可以方便地交换组件。下面是一个如何使用接口的例子:

interface PostsInterface {
    public function getPosts();
}
class JsonPostFetcher implements PostsInterface {
    public function getPosts() {
        // Load posts from JSON files here
    }
}
class MySqlPostFetcher implement PostsInterface {
    public function getPosts {
        // Load posts from a MySQL database
    }
}
class Blog {
    public function __construct(PostsInterface $fetcher) {
        // Load posts from either JSON or a database
        // depending on which fetcher is provided
        $posts = $fetcher->getPosts();
    }
}

使用这种方法,任何人现在都可以编写自己的代码来提供来自外部API ApiPostFetcher, SQLite数据库SqlitePostFetcher,序列化PHP文件SerializedPostFetcher等的帖子。甚至可以编写一个DymmyPostFetcher,它只返回一个预先确定的帖子数组,可以用于测试目的。然后,您可以在您的博客中使用PostsInterface的任何实现,如下面的示例所示。

$fetcher = new JsonPostFetcher(); // You can provide different fetchers here.
$blog = new Blog($fetcher);

如果您不熟悉依赖注入,我强烈建议您学习它,因为它在编写模块化代码时特别有用。

相关内容

  • 没有找到相关文章

最新更新