Потому что, если ты сам не освободишь память, менеджер памяти её высвободит только при завершении работы скрипта С деструктором пример не удачный, т.к. он всё равно в конце работы скрипта будет вызван. покажи пример.
QQQ Очень сомневаюсь. Во всяком случае не GD, иначе бы bugs.php.net завалили сообщениями об "утечках памяти"
Интересно будет услышать вашу критику по поводу следующего класса. Не знаю, как его назвать, но он на основе переданных ему параметров (страницы и количества сообщений на странице), берёт НУЖНУЮ информацию в MySQL и возвращает её, также возвращает массив номеров ВСЕХ страниц. Благодаря полученному массиву страниц, можно делать разчудесные пейджбары . PHP: <?php <?php class sql { /* * Конструктор. Создаём подключение, задаём параметры, в случае неудачи * останавливаем сценарий и выводим ошибку. * * Параметры: * string $host - хост базы данных. * string $user - имя пользователя. * string $pas - пароль пользователя. * string $db - имя базы данных. * int $page - текущая страница. * int $rows - количество записей на странице. */ function __construct($host = "localhost", $user = "root", $pas = "", $db = "test", $page = 1, $rows = 10) { $this->link = mysql_connect($host, $user, $pas) or die("Connect error: ".mysql_error()); mysql_select_db($db, $this->link) or die("Select database error: ".mysql_error()); $this->table = $table; $this->page = $page-1; $this->rows = $rows; } //Посылаем запрос. В случае ошибки останавливаем сценарий, выводим ошибку. //string $query - тот самый запрос. //Возвращает результат запроса. function query($query) { $this->result = mysql_query($query, $this->link) or die("Query error: ".mysql_error()); return $this->result; } //Метод возвращает число строк в текущей таблице. function rows() { $this->query("SELECT COUNT(*) FROM $this->table"); $counts = mysql_fetch_row($this->result); return $counts[0]; } /* * На основе созданных конструктором параметров формируем запрос, * добавляя к переданному в параметре string $query строку LIMIT n,n. * После отправляет его. * Возвращает массив ассоциативных массивов. * Массив с полным списком страниц можно получить, обратившись к sql::pages. */ function fetch($query) { if($query == false) die("Bad query"); $start = abs($this->page*$this->rows); $stop = $start+$this->rows; $query .= " LIMIT $start,$this->rows"; $this->query($query); while($row = mysql_fetch_assoc($this->result)) $rows[] = $row; $Npages = ceil($this->rows()/$this->rows); for($i=1; $i<=$Npages; $i++) $pages[] = $i; $this->pages = $pages; return $rows; } //Закрывает соединение с базой. function __destruct() { mysql_close($this->link); } } ?> Пример использования: PHP: <pre> <?php include_once("lib/sql.php"); //Подключаем класс $pg = (isset($_GET["pg"])) ? $_GET["pg"]:1; //Инициализируем текущую страницу $sql = new sql("localhost", "root", "", "cms", $pg, 1); //Вызываем класс с нужными нам параметрами $sql->table = "test"; //Выбираем нужную таблицу print_r($sql->fetch("SELECT * FROM $sql->table")); //Выводим массив записей страницы. print_r($sql->pages); //Выводим все страницы unset($sql); /* Формат возвращаемого массива записей: Array ( [0] => Array ( [name] => Вася [email] => [email=vasia@email.gg]vasia@email.gg[/email] [home] => vasia.ru [mes] => Тестовое сообщение! ) [1] => Array ( [name] => Петя [email] => [email=petia@email.gg]petia@email.gg[/email] [home] => petia.ru [mes] => Второе тестовое сообщение! ) ) Формат возвращаемого массива страниц: Array ( [0] => 1 [1] => 2 [2] => 3 ) После получения массива страниц, foreache'м можно сделать любой пейджбар */ ?> Буду рад любой критике!
440Hz Знаю... Все когда-то учились). А что конкретно плохо? Алгоритм, да? Очень хочу услышать основны ошибки проектирования. Кода не нужно, просто словами. ) В книгах я ничему не научусь, ибо там говорится только о синтаксисе и молчок о правильности и рациональности использования.
Мда. Действительно жуть. А смысл? Между прочим, есть книжки, в которых говорица о правильности и рациональности использования и при этом очень мало о синтаксисе.
RomanBush Главы Котерова "PHP5" читаю, и Джона Когзелла "РНР5", в первом ничего непонятно, во втором один синтаксис, но очень доступно. Sergey89 Клас, и всего 206 рублей, закажу. 440Hz ждемс..