una predefinidas expresiones define constantes constante constant como php class oop include constants

php - predefinidas - Cómo incluir un archivo que define constantes en una clase(y su alcance)



php class (3)

Digamos que tenemos lo siguiente:

some.class.php

class { public __construct() { fun_stuff(); } }

configuration.inc

const SOMECONST = 1; const SOMEOTHERCONST = 2;

Estoy buscando hacer algo como esto:

some.class.php

class { public __construct() { include_once(configuration.inc); fun_stuff(); } }

Ahora esto funciona, pero la constante no está definida dentro del alcance de la clase ( echo some::SOMECONST; ) sino más bien en el ámbito global ( echo SOMECONST; )

Realmente quiero tener las constantes en otro archivo ya que tiene mucho sentido en mi caso. ¿Hay alguna manera de declarar las constantes en el alcance de la clase? Sé que es imposible de usar includes o requires dentro de la definición de la clase, así que estoy perdido.


En pocas palabras, no es posible sin las extensiones de php. Terminé definiendo las constelaciones en el archivo de clase en sí mismo.


La posibilidad más simple es definir su constante en una clase y dejar que su otra clase amplíe esa clase.

class myClassConstant { const SOMECONST = 1; const SOMEOTHERCONST = 2; } class myClass extends myClassConstant { public function __construct() { echo self::SOMECONST . '' + '' . self::SOMEOTHERCONST . '' = 3''; } } $obj = new myClass(); // Output: 1 + 2 = 3

Si está utilizando el autocargador php, esto se puede dividir fácilmente en dos archivos diferentes.


¿Qué tal algo simple como esto?

class Foo { public $config; public __construct($config) { $this->config = $config; fun_stuff(); } public function Bar() { echo $this->config[''baz'']; } } $foo = new Foo(include_once ''config.php'');

config.php

<?php return array(''baz'' => ''hello earth'');

Aunque no es muy explícito. No hay contratos en la configuración.