abstract class AbstC{
protected static $dir;
public static function start(){
echo self::$dir."<br />";
}
}
class RunClass extends AbstC {
protected static $dir="меняем переменную";
}
$test_txt = RunClass::start();
echo "$test_txt";
У вас в абстрактном классе нет статических переменных.Здравствуйте! Помогите пожалуйста разобраться. Возможно ли поменять значение статической переменной, находящейся в абстрактном классе из дочернего класса?
Как это сделать?
Вот пример кода:
PHP:abstract class AbstC{ protected $dir; public static function start(){ echo self::$dir."<br />"; } } class RunClass extends AbstC { protected $dir="меняем переменную"; } $test_txt = RunClass::start(); echo "$test_txt";
abstract class Extension
{
public function __construct(array $config = array())
{
$this->config($config);
$this->init();
}
abstract protected function init();
abstract protected function config(array $config = array());
}
class MyExt extends Extension
{
protected function init()
{
echo 'Инициализация';
}
protected function config(array $config = array())
{
echo 'Настройка';
}
}
$ext = new MyExt();
abstract class AbstC{
protected $dir;
public static function start(){
return(self::$dir);
}
}
class RunClass1 extends AbstC {
protected $dir="меняем значение переменной в первом классе";
}
class RunClass2 extends AbstC {
protected $dir="меняем значение переменной во втором классе";
}
$test_txt1 = RunClass1::start();
$test_txt2 = RunClass2::start();
echo "$test_txt1<br />$test_txt2";
protected function getDir()
{
return __DIR__;
}
а зачем сигнализация и стук без привязки к сущности вообще нужна? ну было бы два интерфейса, и какое-нить окно? Разве не так?Не Door и KnockKnock, а Alarm и KnockKnock![]()
А без создания объекта возможно изменить значение переменной (свойства) в родительском абстрактном классе через дочерний?
self в методе start указывает на AbstC
abstract class AbstC{
static protected $dir;
public static function start(){
return(self::$dir);
}
}
class RunClass2 extends AbstC {
static protected $dir="меняем значение переменной во втором классе";
// придется переписать метод
public static function start(){
return(self::$dir);
}
}
echo RunClass2::start();
abstract class AbstC{
protected static $a;
protected static $b;
public static function summ(){
echo "Выполнение абстрактного класса...<br />";
$result = self::$a+self::$b;
return($result);
}
}
class RunClass extends AbstC {
protected static $a=2;
protected static $b=3;
public static function summ(){
echo "Выполнение дочернего класса...<br />";
self::$a=2;
self::$b=3;
}
}
$test_txt1 = RunClass::summ();
echo "$test_txt1<br />";
<?php
abstract class AbstC{
protected static $a;
protected static $b;
public static function summ(){
echo "BaseClass...<br />";
$result = self::$a+self::$b;
return $result;
}
}
class RunClass extends AbstC {
public static function summ(){
echo "RunClass...<br />";
self::$a=2;
self::$b=3;
return parent::summ();
}
}
$test_txt1 = RunClass::summ();
echo "$test_txt1<br />";