Skip to content

XMLReader::open() can't be overridden #14183

Closed
@dzentota

Description

@dzentota

Description

The following code https://3v4l.org/7iLBU:

<?php
namespace My;

class XMLReader extends \XMLReader
{
    public static function open(string $uri, string $encoding = null, int $flags = 0): bool|\XMLReader
    {
        echo 'overridden', PHP_EOL;
        return true;
    }
}

XMLReader::open('asdf');
$o = new XMLReader;
$o->open('asdf');

Resulted in this output:

overridden
Warning: XMLReader::open(): Unable to open source data

But I expected this output instead:

overridden
overridden

If I do NOT extend \XMLReader then everything works as expected https://3v4l.org/SKAba

<?php
namespace My;

class XMLReader
{
    public static function open(string $uri, string $encoding = null, int $flags = 0): bool|\XMLReader
    {
        echo 'overridden', PHP_EOL;
        return true;
    }
}

XMLReader::open('asdf');
$o = new XMLReader;
$o->open('asdf');

Output:

overridden
overridden

PHP Version

PHP 8.0+

Operating System

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions