iterator_apply> <class_parents
Last updated: Fri, 24 Feb 2012

class_uses

(No version information available, might only be in SVN)

class_uses Return the traits used by the given class

Descrição

array class_uses ( mixed $class [, bool $autoload = true ] )

This function returns an array with the names of the traits that the given class uses. This does however not include any traits used by a parent class.

Parâmetros

class

An object (class instance) or a string (class name).

autoload

Whether to allow this function to load the class automatically through the __autoload() magic method.

Valor Retornado

An array on success, or FALSE on error.

Exemplos

Exemplo #1 class_uses() example

<?php

trait foo 
{ }
class 
bar {
  use 
foo;
}

print_r(class_uses(new bar));

print_r(class_uses('bar'));


function 
__autoload($class_name) {
   require_once 
$class_name '.php';
}

// use __autoload to load the 'not_loaded' class
print_r(class_implements('not_loaded'true));
?>

O exemplo acima irá imprimir algo similar a:

Array
(
    [foo] => foo
)

Array
(
    [foo] => foo
)

Array
(
    [trait_of_not_loaded] => trait_of_not_loaded
)

Veja Também



User Contributed Notes
class_uses
josh at bitmagnet dot org
16-Apr-2012 04:46
I made a slight mistake in my last note, the correct code is below.

Since traits can use other traits, the following function will recursively check if a class uses a trait anywhere in the trait hierarchy.

<?php
function class_uses_recursive( $class, $trait )
{
   
$traits = class_uses( $class );
   
    while( !empty(
$traits ))
    {
        foreach(
$traits as $k => $t )
        {
            if(
$t == $trait )
                return
true;
           
            if(
class_uses_recursive( $t, $trait ))
                return
true;
           
            unset(
$traits[ $k ] );
        }
    }
   
    return
false;
}
?>
josh at bitmagnet dot org
16-Apr-2012 01:45
Since traits can use other traits, the following function will recursively check if a class uses a trait anywhere in the trait hierarchy.

<?php
function class_uses_recursive( $class, $trait )
{
   
$traits = class_uses( $class );
   
    while( !empty(
$traits ))
    {
        foreach(
$traits as $k => $t )
        {
            if(
$t === $trait )
                return
true;
           
            if(
class_uses_recursive( $class, $t ))
                return
true;
           
            unset(
$traits[ $k ] );
        }
    }
   
    return
false;
}
?>

iterator_apply> <class_parents
Last updated: Fri, 24 Feb 2012