Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Php Check If a Static Class is Declared

Tags:

object

php

static

How can i check to see if a static class has been declared? ex Given the class

class bob {
    function yippie() {
        echo "skippie";
    }
}

later in code how do i check:

if(is_a_valid_static_object(bob)) {
    bob::yippie();
}

so i don't get: Fatal error: Class 'bob' not found in file.php on line 3

like image 739
SeanDowney Avatar asked Sep 23 '08 20:09

SeanDowney


1 Answers

You can also check for existence of a specific method, even without instantiating the class

echo method_exists( bob, 'yippie' ) ? 'yes' : 'no';

If you want to go one step further and verify that "yippie" is actually static, use the Reflection API (PHP5 only)

try {
    $method = new ReflectionMethod( 'bob::yippie' );
    if ( $method->isStatic() )
    {
        // verified that bob::yippie is defined AND static, proceed
    }
}
catch ( ReflectionException $e )
{
    //  method does not exist
    echo $e->getMessage();
}

or, you could combine the two approaches

if ( method_exists( bob, 'yippie' ) )
{
    $method = new ReflectionMethod( 'bob::yippie' );
    if ( $method->isStatic() )
    {
        // verified that bob::yippie is defined AND static, proceed
    }
}
like image 113
Peter Bailey Avatar answered Oct 16 '22 02:10

Peter Bailey