Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как обратится переменной в методе
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Как обратится переменной в методе

Страниц (1): [1]
 

1. juramaj - 20 Января, 2015 - 17:08:21 - перейти к сообщению
Есть у меня два метода,
вот первый
PHP:
скопировать код в буфер обмена
  1. public function get_station_page($page)
  2.     {
  3.         $result_row = $this->db->query("SELECT * FROM `station`");
  4.         $posts = mysqli_num_rows($result_row);
  5.         $num = 2;
  6.         $total = intval(($posts - 1) / $num) + 1;
  7.         $page = intval($page);
  8.         if(empty($page) or $page < 0) $page = 1;
  9.         if($page > $total) $page = $total;
  10.         $start = $page * $num - $num;
  11.         $result_num = $this->db->query("SELECT * FROM `station` ORDER BY id DESC LIMIT $start, $num");
  12.  
  13.         $allstation = array();
  14.         while ($result_station = $result_num->fetch_assoc()) {
  15.             $allstation[$result_station['id']]['id'] = $result_station['id'];
  16.             $allstation[$result_station['id']]['title'] = $result_station['title'];
  17.             $allstation[$result_station['id']]['intro_text'] = $result_station['intro_text'];
  18.             $allstation[$result_station['id']]['date'] = $result_station['date'];
  19.         }
  20.         return $allstation;
  21.         }

и второй
PHP:
скопировать код в буфер обмена
  1. public function get_menu_page($page)
  2.     {
  3.        
  4.         if ($page != 1) $onepage = '<a href=./?page=1>Пред</a>';
  5.         if ($page != $total) $nextpage = '<a href=./?page='.($page + 1).'>След</a>';
  6.         return $onepage.$nextpage;
  7.     }

Как мне в метод get_menu_page передать переменную $total с метода get_station_page
2. DlTA - 20 Января, 2015 - 17:17:25 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. get_station_page(...){
  2.   // ...
  3.   $this->get_menu_page($total);
  4.   // ...
  5. }
3. juramaj - 20 Января, 2015 - 17:22:42 - перейти к сообщению
А как мне уже в методе get_menu_page так сказать принять?
4. DlTA - 20 Января, 2015 - 18:16:02 - перейти к сообщению
кого принять?
5. GoDr - 20 Января, 2015 - 20:10:18 - перейти к сообщению
А почему бы просто не воспользоваться свойствами?

PHP:
скопировать код в буфер обмена
  1. class MySlass{
  2.  
  3.     private $_total;
  4.  
  5.     public function get_station_page($page){
  6.         ...
  7.         $this->_total = intval(($posts - 1) / $num) + 1;
  8.         ...
  9.     }
  10.  
  11.     public function get_menu_page($page){
  12.        ...
  13.         echo $this->_total;
  14.         ...
  15.     }
  16. }
6. DlTA - 20 Января, 2015 - 23:05:29 - перейти к сообщению
GoDr пишет:
А почему бы просто не воспользоваться свойствами?

все можно, и гланды через задний проход вырывать.
вопрос только зачем?!
вот и тут, возникает сомнение, что чел не в курсе зачем он так делает
7. GoDr - 21 Января, 2015 - 07:41:45 - перейти к сообщению
DlTA пишет:
все можно, и гланды через задний проход вырывать.
Не ну можно и так, вот только какие руки длинные нужны Радость

Просто не понимаю зачем передавать из метода в метод внутренние переменные
8. DlTA - 21 Января, 2015 - 15:00:24 - перейти к сообщению
GoDr пишет:
Просто не понимаю зачем передавать из метода в метод внутренние переменные

в это и есть суть инкапсуляции, красота кода, + снижение объема придельной памяти

в чем суть красоты, наглядно:
ваш вариант

$this->a= 10;
$this->method1()

$this->b= 20;
$this->method2()

мой вариант:
$this->method1(10)
$this->method2(20)

как вы думаете что будет проще дебажить, изменять
9. Sail - 21 Января, 2015 - 15:09:48 - перейти к сообщению

DlTA пишет:
снижение объема придельной памяти

Оригинальное определение используемой (находящейся при деле) памяти Радость
10. GoDr - 22 Января, 2015 - 07:57:44 - перейти к сообщению
DlTA, "снижение объема придельной памяти" - вопрос достаточно спорный, особенно в современных условиях.. А вот красота... ну в какой-то степени да Радость особенно когда идёт такой код:
$this->method($a, $b, $c, $d, $e, $a1, $a2, $f1, $f2, $f3)

DlTA пишет:
ваш вариант

$this->a= 10;
$this->method1()

$this->b= 20;
$this->method2()
Утрировано малость Язычок

А если мой вариант такой
PHP:
скопировать код в буфер обмена
  1.     class MySlass{
  2.      
  3.         private $_total;
  4.      
  5.         public function setTotal($a){
  6.             $this->_total = $a;
  7.         }
  8.      
  9.         public function getTotal(){
  10.             return $this->_total;
  11.         }
  12.  
  13.         public function addTotal($a){
  14.             $this->_total = $this->_total + $a;
  15.         }
  16.  
  17.         public function subTotal($a){
  18.             $this->_total = $this->_total - $a;
  19.         }
  20.     }

В вашем варианте как минимум нужно передавать ещё одну переменную Подмигивание

а на счёт "дебажить, изменять"... конечно всё зависит от конкретной задачи. Где-то лучше передавать переменную, а где-то лучше иметь внутреннее свойство

PS
Да и красота - это всего-лишь общепринятые правила + дело вкуса конкретного человека Закатив глазки

 

Powered by ExBB FM 1.0 RC1