asi que estoy tratando de solucionar un problema que tengo al diseñar clases de PHP. Creé una clase base y asigné variables privadas. Tengo clases secundarias que amplían esta clase base, que hacen referencia y cambios a estas variables privadas a través de funciones de la clase base. He aquí un ejemplo, tenga en cuenta que todavía estoy confundido acerca de la diferencia entre private
y métodos protected
/las variables (que me haga saber si estoy haciendo mal!):Acceso variable privado de PHP desde
base.class.php
<?php
class Base {
private $test;
public function __construct(){
require('sub.class.php');
$sub = new Sub;
echo($this->getTest());
}
public function getTest(){
return $this->test;
}
protected function setTest($value){
$this->test = $value;
}
}
?>
sub.class.php
<?php
class Sub extends Base {
public function __construct(){
parent::setTest('hello!');
}
}
?>
por lo tanto, era de esperar que el resultado sea hello!
impreso en la pantalla - en su lugar no hay nada. Podría haber un malentendido fundamental de las clases de mi parte, o tal vez solo estoy haciendo algo mal. Cualquier orientación es muy apreciada! Gracias.
EDIT:
Gracias a todos los que contribuyeron una respuesta - Creo que, a pesar de las excelentes soluciones, que las clases de los niños no son realmente lo que necesito - parece delegar clases puede ser más útil en este punto, como se Realmente no necesito hacer referencia a las funciones base desde dentro de las otras clases.
intento de eco ($ sub-> getTest()); – bumperbox
Pruebe [PHP5 OOP] (http://www.php.net/oop5). – meze
No hay ningún 'echo' o' print' para mostrar algo en la pantalla – zerkms