Edit report at https://bugs.php.net/bug.php?id=64514&edit=1
ID: 64514
User updated by: namarpi at yahoo dot com
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:
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.
Previous Comments:
------------------------------------------------------------------------
[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] [email protected]
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