Здравствуйте! Есть вот такой код: PHP: class a { function __construct() { $this->b[] = "aaa"; $this->b[] = "bbb"; $this->b[] = "ccc"; } function one() { $errTextSpisok = ""; foreach($this->b as $err) { $errTextSpisok.= "<li>".$err."</li>"; } return $errTextSpisok; } } $a = new a(); echo $a->one(); который работает и выводит список * aaa * bbb * ccc Как заставить работать этот класс точно так же как и раньше, если вместо PHP: $a = new a(); echo $a->one(); прописать PHP: echo a::one();
В лоб: PHP: <?php class a { static private $b=array(); static public function one() { self::b[] = "aaa"; self::b[] = "bbb"; self::b[] = "ccc"; $errTextSpisok = ""; foreach(self::b as $err) { $errTextSpisok.= "<li>".$err."</li>"; } return $errTextSpisok; } } Чуть изменив: PHP: <?php class a { static public function one() { $b=array("aaa", "bbb", "ccc"); $errTextSpisok = ""; foreach($b as $err) { $errTextSpisok.= "<li>".$err."</li>"; } return $errTextSpisok; } }
если метод вызывать как статику - в нем не будет $this Если хочешь подобный функционал - объявляй $b как static $b, а в методе вызывай через self::$b Естественно конструктор не будет отрабатывать при статическом вызове.
Volt(220) В лоб и полбу... массив $b=array("aaa", "bbb", "ccc"); Не нужен мне PHP: function __construct($text) { $this->b[] = $text; } __construct и есть массив
Ладно опустим метод, код такой PHP: class a { var $returnErr = ""; static private $_error=array(); static public function one() { $this->_error("aaa"); $this->_error("bbb"); $this->_error("ccc"); return $this->_printErrors(); } function _error($text) { $this->returnErr[] = $text; } function _printErrors() { $errTextSpisok = ""; foreach($this->returnErr as $err) { $errTextSpisok.= "<li>".$err."</li>"; } return $errTextSpisok; } } echo a::one();
)) я ж говорю, массив в функции one не нужен В посте №285246 я написал код который нужно изменить чтоб заработало... Поможешь?
Fatal error: Access to undeclared static property: a::$returnErr in index.php on line ___001 tommyangelo вообще не понятно ничего написал, мне сам код нужен, а не объяснение... Форум же PHP для новичков Запустите код на компе, сами все увидите...
1)Переводи ошибку. Разбирайся из-за чего она. Устраняй причину. 2)Придется понять, иначе вопросы будут возникать все время. Прежде всего пойми разницу между статическими свойствами/методами и обычными.
Первоначальное решение проблемы сразу (почти) правильно дал, а запустить вломмм... Работы на 2 минуты для Вас... Все равно спасибо
Такой вот код получился. Спасибо за помощь PHP: <?php class a { static private $errors = 0; static private $_error=''; static private $returnErr=''; static public function one() { self::_error("aaa"); self::_error("bbb"); self::_error("ccc"); return a::_printErrors(); } function _error($text) { self::$errors++; self::$returnErr[] = $text; } function _printErrors() { $errTextSpisok = ""; foreach(self::$returnErr as $err) { $errTextSpisok.= "<li>".$err."</li>"; } return $errTextSpisok.'<br>'.self::$errors; } } echo a::one(); ?>