Hello,

I would like to start with an example:

   <?php

   class A {

        public static function foo ( ) {

            return 'foo';
        }
   }

   class B {

        protected $a = null;

        public function __construct ( ) {

            $this->a = new A();
        }

        public function a ( ) {

            return $this->a;
        }

        public function f ( ) {

            return $this->a::foo();
        }
   }

   $b = new B();
   var_dump($b->f());

This is not possible. We have a parse error in B::f because $this->a::foo() is not a construction of the language. But we can write:

   $a = $this->a; $a::foo();

In the same way, we can't write:

   $this->a()::foo();

I would like to know why? Is it a compiler related issue or just an omission? Would it be interesting to fix it?

Best regards.

--
Ivan Enderlin
Developer of Hoa
http://hoa.42/ or http://hoa-project.net/

PhD. student at DISC/Femto-ST (Vesontio) and INRIA (Cassis)
http://disc.univ-fcomte.fr/ and http://www.inria.fr/

Member of HTML and WebApps Working Group of W3C
http://w3.org/

Reply via email to