【问题标题】:PHP Imagick setImageCompressionPHP imagick setImageCompression
【发布时间】:2015-05-09 00:06:35
【问题描述】:

我刚开始使用 Imagick / ImageMagick 库编写一些 php,并且已经看到了几个关于 setImageCompression 的示例,它们似乎以不同的方式实现事物。

例如,我见过它是这样使用的:

$image->setImageCompression(Imagick::COMPRESSION_LZW);

还有这样的:

$image->setImageCompression(\Imagick::COMPRESSION_UNDEFINED);

那么,在声明压缩类型之前,反斜杠的相关性是什么?这是特定于压缩类型的吗?我见过的示例中有错字还是其他什么?

【问题讨论】:

  • 可能与命名空间有关。

标签: php imagick image-compression


【解决方案1】:

反斜杠仅在使用namespaces时才需要。

例如,前者在namespace Foo 中不起作用,因为它会寻找一个类Foo\Imagick

namespace {
    var_dump(Imagick::COMPRESSION_LZW); // int(11)
}

namespace Foo {
    var_dump(Imagick::COMPRESSION_LZW); // Class 'Foo\Imagick' not found
}

第二种适用于所有情况:

namespace {
    var_dump(\Imagick::COMPRESSION_LZW); // int(11)
}

namespace Foo {
    var_dump(\Imagick::COMPRESSION_LZW); // int(11)
}

【讨论】:

  • 好的,如果我理解正确,第二个带反斜杠的做法更好,因为它可以在有或没有命名空间的情况下工作?
  • 可以说是,但如果您不打算为您的代码使用命名空间,也可能是矫枉过正。
  • 感谢您的清晰说明,但是单个反斜杠真的过大吗?还是我错过了什么?
  • 仅在最严格的意义上,没有必要这样做;这取决于你:-)
猜你喜欢
  • 2014-07-07
  • 1970-01-01
  • 2012-05-10
  • 2013-01-12
  • 2015-05-24
  • 2013-03-27
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多