A constant
è un constant
; Non v'è alcun abstract
o private
costanti in PHP per quanto ne so, tuttavia è possibile un lavoro intorno:
esempio Abstract Classe
abstract class Hello {
const CONSTANT_1 = 'abstract'; // Make Abstract
const CONSTANT_2 = 'abstract'; // Make Abstract
const CONSTANT_3 = 'Hello World'; // Normal Constant
function __construct() {
Enforcer::__add(__CLASS__, get_called_class());
}
}
Questo sarebbe funzionare bene
class Foo extends Hello {
const CONSTANT_1 = 'HELLO_A';
const CONSTANT_2 = 'HELLO_B';
}
new Foo();
Bar restituisce l'errore
class Bar extends Hello {
const CONSTANT_1 = 'BAR_A';
}
new Bar();
Songo sarebbero tornati errore
class Songo extends Hello {
}
new Songo();
Enforcer Classe
class Enforcer {
public static function __add($class, $c) {
$reflection = new ReflectionClass($class);
$constantsForced = $reflection->getConstants();
foreach ($constantsForced as $constant => $value) {
if (constant("$c::$constant") == "abstract") {
throw new Exception("Undefined $constant in " . (string) $c);
}
}
}
}
Una costante è piena portata volta impostato il relativo disponibile in ogni classe, metodo o funzione what-not. non ha senso, si prega di fornire un codice per spiegare un po 'di più. –
Definire una costante nella classe astratta (quindi ogni classe figlio ha una costante, anche se non definisce la sua), o usa una funzione astratta (che costringe ogni classe figlia a definirne la propria). Modifica: la risposta breve alla tua domanda è no. – halfer