php - 扩展图像类

标签 php image silverstripe extend silverstripe-4

有没有办法像这样扩展 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 网页上没有找到任何内容。

感谢您的帮助。

最佳答案

您可以使用 Injector 重写当 SilverStripe 请求 Image 时加载的类来执行此操作,但对于 Image 不建议这样做。如果你愿意,你可以这样做:

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

您的类(class)将类似于您问题中的示例。


相反,如果您想添加两个新的 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

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

关于php - 扩展图像类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49458517/

相关文章:

javascript - 根据用户的姓氏创建三个图像

content-management-system - 在 SilverStripe CMS 中移动元数据字段?

php - 无需 Ajax 的 SilverStripe GridField 下载链接

php - MPDF 复选框未在 PDF 中仅显示点

php - PHP 中的 Google Analytics 事件跟踪不起作用

html - 如何在跨度内居中图片?

php - Silverstripe 管理tinyMCE 500 错误阻止所见即所得编辑器

php - 为什么我无法取消设置 foreach 循环中通过引用传递的数组项?

php - 如果用户输入错误的电子邮件或密码,Laravel 5.2 会重定向

javascript - 建立网站时,如何将多个小图片组合成一个大图片?