452 Stimmen

PHP-Konstanten, die Arrays enthalten?

Dies ist fehlgeschlagen:

 define('DEFAULT_ROLES', array('guy', 'development team'));

Offenbar können Konstanten keine Arrays enthalten. Was ist der beste Weg, um dies zu umgehen?

define('DEFAULT_ROLES', 'guy|development team');

//...

$default = explode('|', DEFAULT_ROLES);

Dies scheint ein unnötiger Aufwand zu sein.

1voto

biziclop Punkte 14113

Wenn Sie dies aus dem Jahr 2009 suchen, und Sie nicht wie AbstractSingletonFactoryGenerators, hier sind ein paar andere Optionen.

Denken Sie daran, dass Arrays bei der Zuweisung oder in diesem Fall bei der Rückgabe "kopiert" werden, so dass Sie praktisch jedes Mal das gleiche Array erhalten. (Siehe copy-on-write Verhalten von Arrays in PHP.)

function FRUITS_ARRAY(){
  return array('chicken', 'mushroom', 'dirt');
}

function FRUITS_ARRAY(){
  static $array = array('chicken', 'mushroom', 'dirt');
  return $array;
}

function WHAT_ANIMAL( $key ){
  static $array = (
    'Merrick' => 'Elephant',
    'Sprague' => 'Skeleton',
    'Shaun'   => 'Sheep',
  );
  return $array[ $key ];
}

function ANIMAL( $key = null ){
  static $array = (
    'Merrick' => 'Elephant',
    'Sprague' => 'Skeleton',
    'Shaun'   => 'Sheep',
  );
  return $key !== null ? $array[ $key ] : $array;
}

1voto

Alix Axel Punkte 146320

Konstanten können nur skalare Werte enthalten, ich schlage vor, Sie speichern die Serialisierung (oder JSON-codierte Darstellung) des Arrays.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X