Symfony2:扩展php-sdk工具包为自定义包


Symfony2: Extend php-sdk kit to custom bundle

使用Symfony2, Twig和prism:

我已经看了下面的参考资料,但是我仍然不清楚如何扩展Symfony2

中的某些方法

http://symfony.com/doc/current/cookbook/bundles/inheritance.htmlhttp://symfony.com/doc/current/cookbook/bundles/override.html

在我的供应商目录中有一个棱镜文件夹,其中包括以下目录:

vendors/prismic
     php-sdk
     prismic-bundle
对于我的应用程序,我复制了prism -bundle目录并将其移动到这里:
src/VAP/Bundle/PrismicBundle

然后修改appkernel .php来包含这个包:

// new Prismic'Bundle'PrismicBundle'PrismicBundle() ..removed the connection to the vendor dir
new VAP'Bundle'PrismicBundle'PrismicBundle() ..use this custom directory

可以正常工作。

然而,php-sdk目录中有一些方法是从我的自定义PrismicBundle中调用的,我需要扩展或覆盖它们。例如,一个小枝模板可以调用

var.getStructuredText('blog.body').asHtml(ctx.linkResolver)

位于这里:

供应商/prismic/php-sdk/src/prismic/片段/StructuredText.php

我如何/在哪里创建一个文件来扩展/覆盖上面的文件?

我也很困惑,如果php-sdk是一个捆绑包,或者它是从供应商目录的原始PrismicBundle的一部分?

首先,你说你在src文件夹中复制了PrismicBundle,为什么你不使用bundle继承过程呢?

public function getParent()
{
    return 'PrismicBundle';
}

对于你的问题,你必须改变棱镜php-sdk的行为,可能的原因:

  • 1)这个sdk没有很好地构建
  • 2)你没有正确使用
  • 3)你想要一个非常自定义的行为不支持棱镜

在我看来,可能的解决办法是:

  • 1) Fork sdk以增加兼容性
  • 2)考虑不同的方式来满足你的需求
  • 3)在你的自定义PrismicBundle中创建一个新的服务,根据你的需要调用prismic api。

喜欢你的最后一个问题,afaik prism/php- SDK是原始php中的api实现,而prism/prism -bundle是这个原始php SDK和Symfony之间的桥梁,实现服务和Symfony提供的所有商品。