
Значит написал такой вот бред:
class PageCounter
{
private $Total;
private $All_Quantity;
#Метод определения количества записей в таблице
function Data_Quantity($table)
{
$result = mysql_query("SELECT COUNT(*) AS `cnt`
FROM `".$table."`
", CONNECT);
if($result)
$this->All_Quantity = mysql_result($result, 0);
}
#Метод определения диапазона вывода страниц
function List_Range($quantity, $page = 1)
{
#Всего страниц
$this->Total = ceil($this->All_Quantity / $quantity);
#С какой страницы начинаем вывод
$page = intval($page);
if(empty($page) or $page < 0)
$page = 1;
if($page > $this->Total)
$page = $this->Total;
$start = $page * $quantity - $quantity;
return $start;
}
}
Выводим
$page = isset($_GET['page'])?$_GET['page']:1;
$test = new PageCounter();
echo $test -> List_Range($_SESSION['quantity'], $_GET['page']);
Выводит значение, равное - $quantity...(т.е -10 например) т.к. как я понял он не определяет $this->All_Quantity ..(видимо из верхнего метода не передается). Как тут сделать вообще ?
Помогите

Спустя 1 минута, 26 секунд (13.11.2009 - 21:42) Krevedko написал(а):
чет как-то сдвинулся скрипт. у меня все ровненько если чё )
я так понимаю, что не определяется все-таки тут
if($result)
$this->All_Quantity = mysql_result($result, 0);
потому что $table мы не определили для передачи в метод :/
я так понимаю, что не определяется все-таки тут
if($result)
$this->All_Quantity = mysql_result($result, 0);
потому что $table мы не определили для передачи в метод :/
Спустя 11 минут, 12 секунд (13.11.2009 - 21:54) kirik написал(а):
Цитата (Krevedko @ 13.11.2009 - 13:42) |
я так понимаю, что не определяется все-таки тут |
Правильно понимаешь. А можно спросить, где ты вызываешь метод Data_Quantity чтобы посчитать количество записей?

Спустя 8 минут, 56 секунд (13.11.2009 - 22:03) Krevedko написал(а):
наверное надо так
$page = isset($_GET['page'])?$_GET['page']:1;
$test = new PageCounter();
$test->Data_Quantity($_SESSION['table']);
echo $test -> List_Range($_SESSION['quantity'], $_GET['page']);
Спустя 8 минут, 17 секунд (13.11.2009 - 22:11) kirik написал(а):
Цитата (Krevedko @ 13.11.2009 - 14:03) |
наверное надо так |
Работает?

Спустя 12 минут, 44 секунды (13.11.2009 - 22:24) Krevedko написал(а):
да
ладно. буду дальше рыть.
не прощаемся ))

ладно. буду дальше рыть.
не прощаемся ))
Спустя 1 час, 1 минута, 59 секунд (13.11.2009 - 23:26) kirik написал(а):
Можешь объявить магический метод-конструктор:
и тогда делать так:
class PageCounter
{
private $Total;
private $All_Quantity;
#Метод определения количества записей в таблице
function __construct($table)
{
// ......
и тогда делать так:
$test = new PageCounter($_SESSION['table']);
echo $test -> List_Range($_SESSION['quantity'], $_GET['page']);
Спустя 2 минуты, 39 секунд (13.11.2009 - 23:28) Joker написал(а):
Krevedko мне почему то кажется что это задание для еще не запущенного конкурса или я ошибаюсь?)
Спустя 13 минут, 36 секунд (13.11.2009 - 23:42) Krevedko написал(а):
какая разница конкурс не конкурс. я ооп хочу познать )))
Джокер-а вообще читай чат выше
Кирик-спасибо. Я так понимаю __construct автоматом выполняется при создании нового объекта ?
т.е. используем, чтобы лишний метод не вызывать, который и так всегда понадобится ?
Джокер-а вообще читай чат выше
Кирик-спасибо. Я так понимаю __construct автоматом выполняется при создании нового объекта ?
т.е. используем, чтобы лишний метод не вызывать, который и так всегда понадобится ?
Спустя 17 минут, 2 секунды (13.11.2009 - 23:59) glock18 написал(а):
Приплыли... конкурс обсуждаем.
Спустя 5 минут, 54 секунды (14.11.2009 - 00:05) Krevedko написал(а):
не конкурс, а ООП. Так раздел форума называется.
Спустя 6 минут, 3 секунды (14.11.2009 - 00:11) Gabriel написал(а):
ну чего вы прицепились к человеку ну постраничка как постраничка
или может побомбим все темы на форуме связанные с постраничками?
а человеку ой как охота научиться ООП ну дык пускай учиться

а человеку ой как охота научиться ООП ну дык пускай учиться

Спустя 3 минуты, 59 секунд (14.11.2009 - 00:15) Krevedko написал(а):
Назрел новый вопрос...
создал еще один метод. В этом методе мне нужны переменные $quantity и$page из метода List_Range(). Я сделал так. Написал в конце List_Range()
и потом в новом методе обращался соответственно через
$this->Quantity и $this->Page
Это правильно ?
И как в новом методе обратится к $start (которая return $start; )
создал еще один метод. В этом методе мне нужны переменные $quantity и$page из метода List_Range(). Я сделал так. Написал в конце List_Range()
$start = $page * $quantity - $quantity;
$this->Quantity = $quantity;
$this->Page = $page;
return $start;
и потом в новом методе обращался соответственно через
$this->Quantity и $this->Page
Это правильно ?
И как в новом методе обратится к $start (которая return $start; )
Спустя 2 минуты (14.11.2009 - 00:17) Krevedko написал(а):
Цитата (Gabriel @ 13.11.2009 - 21:11) |
ну чего вы прицепились к человеку ну постраничка как постраничка ![]() а человеку ой как охота научиться ООП ну дык пускай учиться ![]() |
точно

Я ж не прошу скрипт за меня писать. Я просто синтаксис спрашиваю.
Благодарю за поддержку

Спустя 45 минут, 57 секунд (14.11.2009 - 01:03) kirik написал(а):
Цитата (Krevedko @ 13.11.2009 - 16:15) |
Это правильно ? |
Думаю что да. Только не забудь еще эти переменные в классе объявить.
Спустя 19 минут, 58 секунд (14.11.2009 - 01:23) Krevedko написал(а):
гм...и без объявления сработало
и что по поводу второй половины вопроса

и что по поводу второй половины вопроса
Цитата |
И как в новом методе обратится к $start (которая return $start; ) |
Спустя 2 часа, 7 минут, 9 секунд (14.11.2009 - 03:30) kirik написал(а):
Цитата (Krevedko @ 13.11.2009 - 17:23) |
и без объявления сработало |
И должно, это ж php

$arr[] = 12;
$arr[] = 13;
//...
- тоже работает, но правильнее определять переменную до того как ты будешь с ней работать:
$arr = array();
$arr[] = 12;
$arr[] = 13;
//...
Цитата (Krevedko @ 13.11.2009 - 17:23) |
и что по поводу второй половины вопроса |
1. либо принимать возвращаемое значение метода List_Range
2. либо определить переменную в классе, как ты сделал с Page и Quantity
Тут собственно все так же как и в процедурном подходе. Либо ты определяешь в функции глобальную переменную через global или забираешь результат функции.
Спустя 10 часов, 3 минуты, 56 секунд (14.11.2009 - 13:34) Krevedko написал(а):
Да. все заработало. Еще вопрос...
Практикуется ли из метода к функции обращаться ... (кстати я попробовал. работает %-) ) или лучше создать отдельный метод ?
Практикуется ли из метода к функции обращаться ... (кстати я попробовал. работает %-) ) или лучше создать отдельный метод ?
Спустя 2 часа, 25 минут, 10 секунд (14.11.2009 - 15:59) Michael написал(а):
Цитата (Krevedko @ 14.11.2009 - 10:34) |
Да. все заработало. Еще вопрос... Практикуется ли из метода к функции обращаться ... (кстати я попробовал. работает %-) ) или лучше создать отдельный метод ? |
Функции объекта - методы - работают с данными этого объекта, или специфические для этого типа объектов.
Всякие независимые функции не лепятся в объект просто для массы, а объявляются как глобальные, и уже внутри методов вызываются.
Спустя 14 минут, 4 секунды (14.11.2009 - 16:13) Krevedko написал(а):
в каком смысле объявляются как глобальные ?
ну вот у меня например есть функция
function valid($result)
{
...
}
в методе я ее просто вызываю
valid($result) и все работает. Нигде ее специально не объявлял.
ну вот у меня например есть функция
function valid($result)
{
...
}
в методе я ее просто вызываю
valid($result) и все работает. Нигде ее специально не объявлял.
Спустя 4 минуты, 49 секунд (14.11.2009 - 16:18) Michael написал(а):
Это ж она и есть - ГЛОБАЛЬНАЯ функция.
А метод объекта ты просто так не вызовешь - нужно через
имя_объекта->имя_метода().
А метод объекта ты просто так не вызовешь - нужно через
имя_объекта->имя_метода().
Спустя 1 минута, 21 секунда (14.11.2009 - 16:19) Krevedko написал(а):
ну дык..что, бывают неГЛОБАЛЬНЫЕ функции чтоли ?
Тогда это уже не функции, а методы
Функция в функции невозможна, насколько я помню..вроде бы )
Тогда это уже не функции, а методы
Функция в функции невозможна, насколько я помню..вроде бы )
Спустя 21 минута, 13 секунд (14.11.2009 - 16:40) Michael написал(а):
Цитата (Krevedko @ 14.11.2009 - 13:19) |
ну дык..что, бывают неГЛОБАЛЬНЫЕ функции чтоли ? Функция в функции невозможна, насколько я помню..вроде бы |
Вообще бывают, в php - нет, но это же скриптовый язык и интерпретатор к тому же.
Структурный подход - просто функции и глобальные переменные.
Смысл в том, что все глобальные функции находятся в одном глобальном пространстве и конкурируют за одни и те же переменные - возможность накладок заведомо велика, особенно если несколько работают над одной программой.
А если строить объектами, то каждый объект имеет свои данные и свои же функции для обработки этих данных. И другим объектам предоставляет только то что необходимо. И вся логика такой работы в том, что объекты обмениваются между собой "сигналами".
Вот почему рекомендуется объявлять переменные объекта как private: другой объект не имеет доступа чтобы изменить эту переменную, а если этого хочет, то вынужден будет вызвать соответствующий метод и сигнал на изменение будет обработан - никакие левые манипуляции не пройдут.
Спустя 3 минуты, 19 секунд (14.11.2009 - 16:44) Krevedko написал(а):
Да, я знаю. Читал про пространства имен у Котерова. Кстати очень понятно там написано, что это и зачем оно надо (в прицнипе тоже и написано. что ты написал), я уже было обрадовался, но потом все как-то стало сложно и непонятно и я перешел к практике

Спустя 1 месяц, 15 дней, 22 часа, 20 минут, 38 секунд (30.12.2009 - 15:04) isqad написал(а):
Здравствуйте, объясните новичку в ООП:
вот пример класса:
у меня есть пару вопросов:
1. parent - это обращение к родительскому классу?
2. Как кроме parent можно обратиться к методу родителя?
3. при создании экземпляра класса hello и применении метода add() экземпляр родительского класса будет создаваться автоматически??
вот пример класса:
class hello extends user
{
function __construct() {}
function add($userid)
{
if(parent::issetuser($userid)) echo 'user is set!';
}
}
у меня есть пару вопросов:
1. parent - это обращение к родительскому классу?
2. Как кроме parent можно обратиться к методу родителя?
3. при создании экземпляра класса hello и применении метода add() экземпляр родительского класса будет создаваться автоматически??