Vra

Dit is hoe ek wou dit wat sal werk in PHP 5.3.0 doen +

<?php
    class MyClass
    {
        const CONSTANT = 'Const var';        
    }

    $classname = 'MyClass';
    echo $classname::CONSTANT; // As of PHP 5.3.0
?>

Maar ek beperk tot die gebruik van PHP 5.2.6. Kan iemand dink van 'n eenvoudige manier om hierdie gedrag te simuleer sonder instantiëren die klas?

Was dit nuttig?

Oplossing

Jy kan dit te bewerkstellig sonder die gebruik van eval in pre-5.3-kode. gebruik net die constant funksie:

<?php

class MyClass
{
    const CONSTANT = 'Const var';
}

$classname = 'MyClass';
echo constant("$classname::CONSTANT");

?>

Ander wenke

As jy absoluut nodig het om toegang te verkry tot 'n konstante so, kan jy dit doen:

<?php
class MyClass
{
        const CONSTANT = 'Const var';
}

$classname = 'MyClass';
echo eval( 'return '.$classname.'::CONSTANT;' );
?>

Maar, as ek jy was, sou ek probeer om nie eval om te gebruik.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top