[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как поменять значение переменной описаной в классе
tech
Доброго времени форумчане! Начал осваивать ООП и пытаюсь переделать одну страничку написаную в процедурном стиле на ООП. Надо чтобы при нажатии кнопки вывелось сообщение, а кнопка пропала. Это я легко сделал в процедурном стиле. Такой же алгоритм пытаюсь реализовать на ООП но кнопка не пропадает.

<?php
class
my_first_class
{
public $r=1;

function show_echo()
{
$this->r=0;
echo 'lol';
$this->r=0;
}

function show_button()
{
echo "<form method='post'><input type='submit' value='Show' name='add_make'></form>";
}
}


$obj0 = new my_first_class();

if($obj0->r==1)
{
$obj0->r=0;
$obj0->show_button();
$obj0->r=0;
}

if (isset($_POST['add_make']))
{
$obj0->r=0;
$obj0->show_echo();
$obj0->r=0;
}
?>


Везде переменной r присвоил 0 где только возможно, но кнопка все равно не пропадает. Вопрос, как поменять значение переменной которая описана в класе? Пожалуйсто не кидайте помидорами если что user posted image
GET
Наверное лучше, что - то типа такого
class my_first_class
{
public static $r=1;

function show_echo()
{
echo 'lol';
}

function show_button()
{
echo "<form method='post'><input type='submit' value='Show' name='add_make'></form>";
}
}


$obj0 = new my_first_class();
if(isset($_POST['add_make']))
{
$obj0->show_echo();
$obj0::$r=0;
}

if($obj0::$r==1)
{
$obj0->show_button();
}


Чтоб извне изменить значение переменной в классе, надо либо, чтоб она была публичной и например статической, либо воспользоватся сеттером, через который задать ей значение, по крайней мере, как я делаю и понимаю, может меня поправят:

http://habrahabr.ru/post/197332/

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
kaww
Цитата (ABC @ 2.10.2014 - 02:25)
и статической

Это еще почему. уровень доступа к свойствам и методам объекта определяется как private, protected, public.
Например, так:
class MyClass
{

public $allowed = true;

/**
*
@return string|null
*/

public function getFormHTML()
{
if ($this->allowed) {

return "<form method='post'><input type='submit' value='Show' name='add_make'></form>";
}
return null
}
}


$myObj = new MyClass();
echo $myObj->getFormHTML();
$myObj->allowed = false;
echo $myObj->getFormHTML();
GET
Цитата
Это еще почему. уровень доступа к свойствам и методам объекта определяется как private, protected, public.


Да, я там какую-то глупость написал, не
Цитата
публичной и статической
, а
Цитата
  публичной и например статической
вероятно, я так хотел сказать, потому, наверное хотел пример вообще написать для статического класса, чтоб без создания объекта, но не написал. smile.gif

Короче все плохо, сегодня утром. smile.gif

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
tech
Спасибо за каждое мнение! Все верно у меня переменная и была публичной. В общем решился вопрос. Я просто поменял местами 2 условия с if-ми и все заработало. За ссылку отдельное спасибо, познавательно.

<?php
class
my_first_class
{
public $r=1;

function show_echo()
{
echo 'lol';
}

function show_button()
{
echo "<form method='post'><input type='submit' value='Change make of brand' name='add_make'></form>";
}
}


$obj0 = new my_first_class();
//1-й if, вот он был раньше после 2-го if-a
if (isset($_POST['add_make']))
{
$obj0->show_echo();
$obj0->r=0;
}
// 2-й if
if($obj0->r==1)
{
$obj0->show_button();
}
?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.