Новости:

Форуму исполнилось 12 лет!

Мы в матрице .
Мы в телеге .

Главное меню

php область видимости

Автор kvip, 07 сентября 2014, 06:23:43

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

kvip

Привет всем.

Есть класс, к примеру: class.php

<?php
class cMain1
{
public 
$string;

public function 
__construct()
{
cMain1::Test1();
}
public function 
Test1();
{
$string 1;
return 
$string1;
}
}

$cLoad = new cMain1();

echo 
$string;


При выводе переменной string сервер отвечает, что ее не существует, как я понимаю ее просто не видно.
Как сделать переменную видной не только в классе?

Graf

Я в php, мягко говоря, не силен  :blush_mini:
Но, имхо, в каждом языке есть понятие глобальных, статических и т.д. переменных.
Думаю, если объявить переменную как глобальная, она будет видна везде (в Си так).
А ВОТ ТАК сказал Гугл, может пригодится. :)

kvip

Да я читал про область видимости в php, но то что ты скинул - это вывод функций а не переменных.

В С все конечно просто с переменными, а вот в php отсутствует декларация функций.

webdoc

во-первых, обязательно прочитайте это, причем последовательно ))

http://phpclub.ru/detail/article/php5_andi_book
http://www.ibm.com/developerworks/ru/library/os-php-5.3new1/index.html?S_TACT=105AGX99&S_CMP=GR01
http://habrahabr.ru/post/136800/


вот код, обращение к переменной через <ИмяКласса>::<Переменная>
Это одно из решений.
и что важно обращаться к классу лучше через переменную self, будет меньше проблем с наследованием.
А язык С, вообще забудьте, в php совершенно иная концепция классов, декларация переменных и много всяких интересных плюшек и т.д.

Цитировать<?php
class cMain1
{
   public $string;
   static $instance = NULL;
   
   public function __construct()
   {
      cMain1::Test1();
   }

   public function Test1()
   {
      self::$instance = 1;
      //return $string;
   }
}

$cLoad = new cMain1();

echo $cLoad::$instance;
?>

kvip

#4
Спасибо, все прочитал и разобрался.

Но есть пару вопросов:
1. Почему $instance объявляется статической (не может изменять свое значение) и заполняется нулем?
2. return $string; должна вернуть $string = 1; правильно?

webdoc

1. Задача стояла увидеть значение переменной, мы ее увидели. Можно было сделать ее public и обратится к ней через $cLoad -> instance.
Вообще статические переменные нужны не для этого.

2. Я не понял вопроса , return тут вообще не нужен.

3. Можно global $string; вначале файла и тогда переменная будет видна везде, но global это "колхозное" решение, хотя и широко используемое.

kvip