有没有办法像这样扩展 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/