[TYPO3-core] QueryInterface-compat for CMS 6.1 and 6.2?

Xavier Perseguers xavier at typo3.org
Thu Apr 10 08:58:28 CEST 2014


Hi,

> The QueryInterface (Extbase Persistence) changed between 6.1 and 6.2.
> In 6.1 one param is given just with an annotation for an "object" in
> phpdoc, 6.2 now mentions a param of a certain class.

The interface was actually cleaned up a lot in the last days before
release of 6.2 because it was actually a pretty mess with partially
wrong annotations or hints.

Though nothing against the work that was done in Extbase before of
course, but we decided to get a clean base for the new LTS

> Do I guess right that it's not possible (at least not without a hack) to
> have an implementation that works with both interfaces?

I just tested this:

<?php

interface A_61 {
        public function foo($mydate);
}

interface A_62 {
        public function foo(DateTime $mydate);
}

class B_61 implements A_61 {
        public function foo($mydate) { return 'ok'; }
}

class B_62 implements A_62 {
        public function foo($mydate) { return 'ok'; }
}

class C_61 implements A_61 {
        public function foo(DateTime $mydate) { return 'ok'; }
}

class C_62 implements A_62 {
        public function foo(DateTime $mydate) { return 'ok'; }
}


when I run it, I get

Fatal error: Declaration of B_62::foo() must be compatible with that of
A_62::foo()

So the C_* implementations seem to be fine for everyone, both the 6.1
world and the new, strict 6.2 world.

-- 
Xavier Perseguers
TYPO3 CMS Team Member

TYPO3 .... inspiring people to share!
Get involved: http://typo3.org



More information about the TYPO3-team-core mailing list