Edit report at https://bugs.php.net/bug.php?id=64514&edit=1

 ID:                 64514
 Updated by:         larue...@php.net
 Reported by:        namarpi at yahoo dot com
 Summary:            Traits - ask for get_trait_methods
 Status:             Open
 Type:               Feature/Change Request
 Package:            Class/Object related
 Operating System:   Irrelevant
 PHP Version:        5.4.13
 Block user comment: N
 Private report:     N

 New Comment:

you may want to see: http://php.net/manual/en/function.class-uses.php


and works like: get_class_methods(current(class_uses("My_Class")));


Previous Comments:
------------------------------------------------------------------------
[2013-03-26 08:02:07] larue...@php.net

you may want to see: http://php.net/manual/en/function.class-uses.php


and works like: get_class_methods(current(class_uses("My_Class")));

------------------------------------------------------------------------
[2013-03-26 06:53:28] namarpi at yahoo dot com

The aim is not to bother My_Class with plenty of methods, I can pick up them, 
and put them into a separate My_Trait file. And, the other advantage is that 
the user do not need to dig into the My_Class, it is enough him/her to know the 
more simpler My_Trait.

------------------------------------------------------------------------
[2013-03-26 05:08:02] namarpi at yahoo dot com

It is a WordPress example, and I am already using the New solution:

// Old solution:

class My_Class {

    function method() {
        [...]
        foreach( $things as $index => $thing ) {                
            call_user_func_array(
                array( $this, $thing ),
                array( $arg1, $arg2, $arg3 )
            );
        }
        [...]
    }
}

-------------------------------------------------------------------------------------------
// New solution:

class My_Class {

    function __construct() {
        [...]
        $trait_methods = get_class_methods( 'My_Trait' );
        foreach( $trait_methods as $trait_method ) {
            add_action( "id/$trait_method", array( 'My_Trait', "$trait_method" 
), 5, 3 );
        }
        [...]
    }
}

------------------------------------------------------------------------
[2013-03-26 03:59:55] larue...@php.net

could you please show us a real usage for this?

------------------------------------------------------------------------
[2013-03-25 17:27:46] namarpi at yahoo dot com

Description:
------------
---
>From manual page: http://www.php.net/language.oop5.traits
---

I would like to ask for a method which should be called get_trait_methods, and 
acts like the get_class_methods.

Test script:
---------------
// file1.php
trait My_Trait {
    function trait_method_1() {}
    function trait_method_2() {}
}

// file2.php
class My_Class {
    use My_Trait;

    function class_method_1() {
        $trait_methods = get_class_methods( 'My_Trait' ); // <-- 
get_trait_methods
print_r( $trait_methods );
    }

    function class_method_2() {}
}

$my_object = new My_Class();
$my_object->class_method_1();


Expected result:
----------------
Array
(
    [0] => trait_method_1
    [1] => trait_method_2
)

Actual result:
--------------
Recently get_class_methods does this job.


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=64514&edit=1

Reply via email to