• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • SplFileInfo::setInfoClass()

    (PHP 5 >= 5.1.2, PHP 7)

    Sets the class used with SplFileInfo::getFileInfo() and SplFileInfo::getPathInfo()

    说明

    publicSplFileInfo::setInfoClass([string $class_name= "SplFileInfo"]): void

    Use this method to set a custom class which will be used when SplFileInfo::getFileInfo() and SplFileInfo::getPathInfo() are called. The class name passed to this method must be SplFileInfo or a class derived from SplFileInfo.

    参数

    $class_name

    The class name to use when SplFileInfo::getFileInfo() and SplFileInfo::getPathInfo() are called.

    返回值

    没有返回值。

    范例

    SplFileInfo::setFileClass() example

    <?php
    // Define a class which extends SplFileInfo
    class MyFoo extends SplFileInfo {}
    $info = new SplFileInfo('foo');
    // Set the class name to use
    $info->setInfoClass('MyFoo');
    var_dump($info->getFileInfo());
    ?>
    

    以上例程的输出类似于:

    object(MyFoo)#2 (0) { } 
    

    参见

    • SplFileInfo::getFileInfo() Gets an SplFileInfo object for the file
    Be careful when using this method, as the functionality isn't exactly the same as instantiating the extending class directly. This can really trip you up if you're using type hints or instanceof checks.
    <?php
    class CustomFileInfo extends SplFileInfo
    {
      public function getExtension()
      {
        $ext = strtolower(parent::getExtension());
        return 'jpeg' === $ext ? 'jpg' : $ext;
      }
    }
    $path = __DIR__ . '/foobar.jpeg';
    $good = new CustomFileInfo($path);
    echo "<pre>";
    var_dump($good instanceof SplFileInfo);
    var_dump($good instanceof CustomFileInfo);
    $bad = new SplFileInfo($path);
    $bad->setInfoClass('CustomFileInfo');
    var_dump($bad instanceof SplFileInfo);
    var_dump($bad instanceof CustomFileInfo);
    echo "</pre>";
    ?>
    Outputs:
    bool(true)
    bool(true)
    bool(true)
    bool(false)