Четверг, 21 Ноября 2024, 21:44

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
[PHP] Несколько функций и заголовок
dima9595Дата: Понедельник, 17 Ноября 2014, 11:53 | Сообщение # 1
почти ветеран
Сейчас нет на сайте
Приветствую всех!
Очередной раз обращаюсь к вам, программисты. Пишу страницу пользователей (т.е. профиля) и столкнулся с проблемой...приведу код:

Класс Users:
Код

class Users{

     function __construct(){
      $this->id = $_SESSION['users']['id'];    // ID пользователя
      $this->login = $_SESSION['users']['login'];    // Логин пользователя
      $this->access = $_SESSION['users']['access'];    // Группа пользователя

      $this->id_get = $_GET['id'];    // ID пользователя ($_GET)
      $this->id_get = round($this->id_get);    // Округляем
     }

     function distribution(){
      ## Разделение типа профилей (свой - чужой)
      if($this->id_get <= 0){
       $this->error("alert alert-bad", "Неверное ID пользователя!");
      }else{
       if($this->id == $this->id_get){
        $this->panel();    // Это наш профиль
       }else{
        $this->panel_two();    // Это не наш профиль
       }
      }
     }

     function panel(){
      ## Наш профиль
      global $db, $config;
          
      ## Получаем данные
      // Пропущено

      ## Получаем файл и заменяем значения
      // Пропущено

      print $tpl;

      ## Заголовок
      // Здесь нужно как-то передать в функцию title() текст и переменную, например 'Пользователь'.$this->login
     }

     function panel_two(){
      ## Чужой профиль
      // Не нужно
     }

     function title(){
      // Здесь выводить заголовок
      // return ...
     }

     function error($type_error, $error){
      echo '<div class="grid8"><div class="'.$type_error.'">'.$error.'</div></div>';
     }
}

## Запуск класса
$users = new Users();


Страница профиля:
Код

<?php     
// Пропущены различные настройки, конфиги и т.п.
?>
<!DOCTYPE html>
<html lang="ru">
<head>
        <title><?=$config['title'].' - '.$users->title();?></title>
</head>

<body>

<div class="container">
        <div class="row">
            <?php require_once(TEMPLATES_DIR.$config['default_template'].'left.php'); ?>

            <?php $users->distribution(); ?>

            <?php require_once(TEMPLATES_DIR.$config['default_template'].'/right.php'); ?>

            <?php require_once(TEMPLATES_DIR.$config['default_template'].'/footer.php'); ?>
        </div>
</div>
            
</body>
</html>


Проблема в том, что я не могу передать из функции panel() в функцию title() ни какие данные. А вот если передавать из конструктора данные в title(), то всё естественно получается. А вот как правильно передавать данные в ООП я не понимаю, всё таки я новичёк.
Надеюсь на вашу помощь и ваше понимание.




Сообщение отредактировал dima9595 - Понедельник, 17 Ноября 2014, 12:10
Snake174Дата: Понедельник, 17 Ноября 2014, 13:21 | Сообщение # 2
участник
Сейчас нет на сайте
Код

function __construct(){  
       $this->id = $_SESSION['users']['id'];    // ID пользователя  
       $this->login = $_SESSION['users']['login'];    // Логин пользователя  
       $this->access = $_SESSION['users']['access'];    // Группа пользователя  

       $this->id_get = $_GET['id'];    // ID пользователя ($_GET)  
       $this->id_get = round($this->id_get);    // Округляем  

       // Заголовок
       $this->title = '';
}  

## Заголовок  
       // Здесь нужно как-то передать в функцию title() текст и переменную, например 'Пользователь'.$this->login
      $this->titte = 'Пользователь'.$this->login;

function title(){  
       // Здесь выводить заголовок  
        return $this->title;
      }  



biggrin


Не следует обманывать инспектора
Pipmak Assistant
Love2D Exporter
Love2D-Helpers
Old Consoles Games
dima9595Дата: Понедельник, 17 Ноября 2014, 14:51 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
Snake174, пробовал, не помогало(



Сообщение отредактировал dima9595 - Понедельник, 17 Ноября 2014, 15:00
Andrey_VolkovДата: Понедельник, 17 Ноября 2014, 15:27 | Сообщение # 4
частый гость
Сейчас нет на сайте
Я сначала не понял вообще вопрос... Это во-первых не функции, а методы)

Сообщение отредактировал Andrey_Volkov - Понедельник, 17 Ноября 2014, 15:29
dima9595Дата: Понедельник, 17 Ноября 2014, 15:31 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
Цитата Andrey_Volkov ()
Это во-первых не функции, а методы

Я знаю что правильно говорить "методы", но мне удобней "функции"...




Сообщение отредактировал dima9595 - Понедельник, 17 Ноября 2014, 16:03
Andrey_VolkovДата: Понедельник, 17 Ноября 2014, 15:51 | Сообщение # 6
частый гость
Сейчас нет на сайте
Цитата dima9595 ()
Я знаю что правильно говорить "методы", но мне удобней функции...

Удобнее и правильнее - разные вещи)
Мб сделать как то так:
Код
class Foobar {
   function One() {
    $var = 'helloworld';
    return $var;
   }

   function Two() {
    print_r($this->One());
   }
}

$obj = new Foobar;
$obj->Two();


Второй вариант:
Код
class Foobar {
  function One() {
   $this->var = 'hello world';
  }

  function Two() {
   print_r($this->var);
  }
}

$obj = new Foobar;
$obj->One();
$obj->Two();


В итоге мы передаем свойство метода One в метод Two, причем вполне рабочее.


Сообщение отредактировал Andrey_Volkov - Понедельник, 17 Ноября 2014, 16:02
dima9595Дата: Понедельник, 17 Ноября 2014, 16:22 | Сообщение # 7
почти ветеран
Сейчас нет на сайте
Andrey_Volkov, щас попробую...

Добавлено (17.11.2014, 16:22)
---------------------------------------------
Andrey_Volkov, спасибо за помощь! + поставлю!
1-ый вариант у меня работает, а вот 2-ой в моём случае не работает(((


last2424Дата: Понедельник, 17 Ноября 2014, 16:33 | Сообщение # 8
30 мл. блоков
Сейчас нет на сайте
Andrey_Volkov, хватит баловаться терминами - объявляем мы метод, а вызываем мы функцию. biggrin
Ещё всё таки есть вариант в что php правильнее говорить функцию, т.к. объявление метода начинается с function - функция.


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
dima9595Дата: Понедельник, 17 Ноября 2014, 16:40 | Сообщение # 9
почти ветеран
Сейчас нет на сайте
Цитата last2424 ()
т.к. объявление метода начинается с function - функция.

Вот из-за этого я и начал говорить и писать "функция")))
last2424, не могли бы помочь в моём скрипте? По сути, код, который предложил Andrey_Volkov - работает, но с ним будет очень много проблем. Хотелось бы как-то вкратце написать. Я как помню, вы знаете php...
PS: и если не затруднит, то в скайпе)




Сообщение отредактировал dima9595 - Понедельник, 17 Ноября 2014, 16:40
last2424Дата: Понедельник, 17 Ноября 2014, 16:43 | Сообщение # 10
30 мл. блоков
Сейчас нет на сайте
dima9595, ёпрст, ты не знаешь такую вещь как аргументы?
Я надеюсь правильно понял что через функцию title выводятся все данные о пользователе?
P.S. ты бы скайп дал что ли свой? biggrin


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

Сообщение отредактировал last2424 - Понедельник, 17 Ноября 2014, 16:46
dima9595Дата: Понедельник, 17 Ноября 2014, 16:46 | Сообщение # 11
почти ветеран
Сейчас нет на сайте
Цитата last2424 ()
ёпрст, ты не знаешь такую вещь как аргументы?

Я как понимаю это значение/переменная(-ые), которые помещаются в скобки в функции, например function qq(аргумент-ы){}. Я правильно понял!?
Цитата last2424 ()
Я надеюсь правильно понял что через функцию title выводятся все данные о пользователе?

Через функцию title выводится только заголовок страницы (<title>Здесь значение функции title()</title>)


last2424Дата: Понедельник, 17 Ноября 2014, 16:48 | Сообщение # 12
30 мл. блоков
Сейчас нет на сайте
Ёпрс, какие нафиг данные, заголов это biggrin
Ну так лол, тоже самое отправляешь запрос на title с аргументами скажем title("Ya lolka");
А в объявление метода пишешь что
function title($title){
//принтуем $title.
}


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

Сообщение отредактировал last2424 - Понедельник, 17 Ноября 2014, 16:53
Andrey_VolkovДата: Понедельник, 17 Ноября 2014, 17:04 | Сообщение # 13
частый гость
Сейчас нет на сайте
Цитата dima9595 ()
Andrey_Volkov, хватит баловаться терминами - объявляем мы метод, а вызываем мы функцию.
Ещё всё таки есть вариант в что php правильнее говорить функцию, т.к. объявление метода начинается с function - функция.

Не нужно путать ООП и процедурное программирование. В ООП используются и вызываются именно методы, а не функции. При этом, ничто не мешает использовать методы ООП и функции процедурного стиля в одной системе, но это уже глупость.


Сообщение отредактировал Andrey_Volkov - Понедельник, 17 Ноября 2014, 17:06
dima9595Дата: Понедельник, 17 Ноября 2014, 17:21 | Сообщение # 14
почти ветеран
Сейчас нет на сайте
last2424, и так не получается, пробовал уже...

Добавлено (17.11.2014, 17:21)
---------------------------------------------
Пробовал писать так:

Код

  function panel(){
   ## Наш профиль
   global $db, $config;
    
   ## Получаем данные
   // ...

   // Здесь какие-то действия

   // Для заголовка (<title></title>)
   $this->title = 'Пользователь '.$this->login;
  }

  function get_title(){
   ## Принимает значение заголовка
   $var = $this->title;
   return $var;
  }

  function title(){
   ## Выводит заголовок
   return $this->get_title();
  }


Всё равно ни чего не передаётся! (((




Сообщение отредактировал dima9595 - Понедельник, 17 Ноября 2014, 17:15
last2424Дата: Понедельник, 17 Ноября 2014, 17:32 | Сообщение # 15
30 мл. блоков
Сейчас нет на сайте
dima9595, ты тупой или как? ты возвращаешь заголовок а не выводишь его.

в get_title напиши между () $var
дальше из get_title вызываешь $var в title и всё ёпрст


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

Сообщение отредактировал last2424 - Понедельник, 17 Ноября 2014, 17:39
dima9595Дата: Понедельник, 17 Ноября 2014, 17:42 | Сообщение # 16
почти ветеран
Сейчас нет на сайте
last2424,
Цитата last2424 ()
ты тупой или как?

Я не очень сильно понимаю что вы мне говорите, возможно я в какой-то степени и тупой (в PHP), так что пожалуйста обращайтесь более спокойно и культурно!

Добавлено (17.11.2014, 17:42)
---------------------------------------------

Код
function get_title($var){
   ## Принимает значение заголовка
   $this->var = $var;
  }

  function title(){
   ## Выводит заголовок
   return $this->var;
  }


Вот так?


last2424Дата: Понедельник, 17 Ноября 2014, 17:44 | Сообщение # 17
30 мл. блоков
Сейчас нет на сайте
dima9595, лол нет, ты возвращай в get_title() $var к которому присвоено значение $this->var.
Потом после этого там же пишешь return $var;
И вызываешь это значение из title().


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
dima9595Дата: Понедельник, 17 Ноября 2014, 17:52 | Сообщение # 18
почти ветеран
Сейчас нет на сайте
Код
function get_title($var){
  ## Принимает значение заголовка
  $this->var = $var;
  return $this->var;
}

function title(){
  ## Выводит заголовок
  return $this->var;
}


Теперь лучше?

Добавлено (17.11.2014, 17:52)
---------------------------------------------
Метод get_title($var) точно работает. Но вот title() нет(


last2424Дата: Понедельник, 17 Ноября 2014, 18:09 | Сообщение # 19
30 мл. блоков
Сейчас нет на сайте
Код
function get_title($var){  
   ## Принимает значение заголовка  
   $var = $this->var;  
   return title($var);  
}  

function title($var2){  
   ## Выводит заголовок  
   return $var2;  
}

Вроде так должно работать.


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
dima9595Дата: Понедельник, 17 Ноября 2014, 18:11 | Сообщение # 20
почти ветеран
Сейчас нет на сайте
Ошибка: Fatal error: Call to undefined function title() в строке "return title($var);"

  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг