On Tue, May 1, 2012 at 9:07 PM, reeze <reeze....@gmail.com> wrote:
> Hi, Laruence:
>
>    I mean pass a wrong class object to a function/method. if the type hinted
> Class didn't loaded, we
> could try to load it. (if it's the right class, nothing happened), eg.
>
>          function func(NotFoundClass $a) {}
>
> maybe we could pass another class instance.
> $a = new DemoClass();
> func($a);
>
> It would be useful for class_alias like Bug#61422 requested.
Hi:
class_alias does well with type hint now, the following script :
  <?php

  function b (Foo_Bar $a) {
     echo 'okey';
   }

   class Dummy {
   }

   class_alias('Dummy', 'Foo_Bar');

    b(new Dummy);
  ?>

   works find now(5.3+), output :
     "okey"

thanks

> It's a little narrow feature usage scenario,but it gives a way to handle it.
> so I think
> It might be useful。
>  if failed to autoload it raise E_CATCHABLE_FATAL, loaded class will simple
> released
>  if user catch the E_CATABLE_FATAL, loaded class will be useful, since it
> will be used later.
>  if loaded success everyone is happy.
>
>
> On 1 May 2012 20:25, Laruence <larue...@php.net> wrote:
>>
>> On Tue, May 1, 2012 at 8:03 PM, reeze <reeze....@gmail.com> wrote:
>> > Hi internals:
>> > danko reported this bug#61422: Lack of autoload on type hinting breaks
>> > class_alias。
>> > now parmeter type hint DID NOT trying to autoload.  I think allow it
>> > autoloading could be helpful.
>> >
>> > BUGS&Commit for quick refer:
>> > - https://bugs.php.net/bug.php?id=61422
>> > - https://bugs.php.net/bug.php?id=39003
>> > - http://svn.php.net/viewvc?view=revision&revision=220906
>> >
>> > PROPOSAL(FR):
>> > **I'm asking if we can enable type hint autoloading?**
>> >
>> > I did some homework:
>> > - Before FIX for #39003, parameter type hint will try to autoload the
>> > hint
>> > class if not found.
>> >           after this fix it will not. in bug#39003: the final result was
>> > DOC
>> > Problem, seems we all agreed
>> >           that it SHOULD autoloading.
>> > - But in
>> > revision: http://svn.php.net/viewvc?view=revision&revision=220906 It was
>> > **FIXED**
>> >           I try to search RFC about typehint, I didn't find anything
>> > about
>> > it. It was commited really long time ago
>> >           almost 6 years ago, it would be very nice if Antony
>> > Dovgal still
>> > remember it;)
>> >
>> > REASON:
>> >     Here is my reason to ask whether we can enable it:
>> >
>> > 1. Autoload will only happened when function/method calling. so does any
>> > other autoloading,
>> >     I mean it wouldn't hurt performance.
>> > 2. Class will be used for sure, so trying to autoload it is reasonable:
>> >        - If we need check certain Class, then we have to use the class
>> > in
>> > function/method.
>> >        - most of time it already loaded*, so autoloading happened
>> > rarely.
>> > 3. If pass the wrong type and the hinted class not found  this gives
>> > autoloader a change to handle it
>> >     like the #61422's test script did. we can do something if not found.
>> > since we use the class in
>> >     function/method, autoload the class is reasonable. most of the time
>> > we
>> > would not use the *FEATURE*,
>> >     but it could make it more flexible.
>> >
>> > PATCH:
>> >
>> > 1. change zend_verify_arg_class_kind to autoload class
>> > 2. if class can't load, zend_fetch_class silently return (No fatal here)
>> > to
>> > give zend_verify_arg_class_kind a chance
>> >     to report previous catchable_fatal_error eg:
>> > Catchable fatal error: Argument 1 passed to func() must be an instance
>> > of
>> > AX, integer given。
>> >
>> > a simple patch attached request for comment.
>> >
>> > Finally, What do you guys think about it?
>> Hi:
>>    thanks for writing this,  but I was a little confused,  please
>> correct me if I mis-understand you.
>>
>>    if you pass a right instance of class to a function , how can that
>> class not be loaded already?
>>
>>    for example:
>>    function foo(Foo_Bar $a) {
>>    }
>>
>>    how can you pass a Foo_Bar instance to function foo without
>> Foo_Bar class already defined?
>>
>>
>> thanks
>>
>>
>> >
>> > Thanks.
>> > Best,
>> > --
>> > reeze | simpie.com
>>
>>
>>
>> --
>> Laruence  Xinchen Hui
>> http://www.laruence.com/
>
>
>
>
> --
> http://reeze.cn



-- 
Laruence  Xinchen Hui
http://www.laruence.com/

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to