[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; }
Не следует обманывать инспектора 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, хватит баловаться терминами - объявляем мы метод, а вызываем мы функцию. Ещё всё таки есть вариант в что 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. ты бы скайп дал что ли свой?
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Сообщение отредактировал 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 мл. блоков
Сейчас нет на сайте
| Ёпрс, какие нафиг данные, заголов это Ну так лол, тоже самое отправляешь запрос на 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);"
|
|
| |