2

有没有办法像这样扩展 Silverstripe 4 中的图像类?

class MyImage extends Image {
    public function generateRotateClockwise(GD $gd)    {
        return $gd->rotate(90);
    }

    public function generateRotateCounterClockwise(GD $gd)    {
        return $gd->rotate(270);
    }

我在 Silverstripe 网页上没有找到任何东西。

谢谢你的帮助。

4

1 回答 1

3

您可以使用 Injector 重写 SilverStripe 请求时加载的类Image,但不建议使用 Image。如果你愿意,你可以这样做:

# File: mysite/_config/injector.yml
---
Name: myinjectorconfig
---
SilverStripe\Core\Injector\Injector:
  SilverStripe\Assets\Image:
    class: MyImage

您的课程看起来就像您问题中的示例。


相反,如果您想添加两个新的 PHP 方法,您可以使用扩展:

use SilverStripe\ORM\DataExtension;

class MyImageExtension extends DataExtension
{
    public function generateRotateClockwise(GD $gd)
    {
        return $gd->rotate(90);
    }

    public function generateRotateCounterClockwise(GD $gd)
    {
        return $gd->rotate(270);
    }
}

然后将其应用于带有配置的图像:

# File: mysite/_config/extensions.yml
---
Name: myextensions
---
SilverStripe\Assets\Image:
  extensions:
    - MyImageExtension

这会将两个公共方法添加到使用 Image 类的任何位置。

于 2018-03-25T20:51:36.753 回答