Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ООП & session, код  
:(
    Опции темы
Logree
Дата 1.7.2007, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



Код


<?php
    function db_connect($host,$pass,$user,$base,$query) {
        $mysql = mysql_connect($host,$user,$pass);
        if ($mysql) or die('connection failid');
        $db = mysql_db_name($base);
    }
    session_start();
    class main_page {
        var $_SESSION['title'];
        var $_SESSION['keyw'];
        var $_SESSION['style'];
           
        function _construct() {
         $_SESSION['title'] = "Форум - Ghost";
         $_SESSION['keyw'] = "Форум";
         $_SESSION['style'] = "style/css.css"    
        }
        
        function header($title, $keyw) {
            echo "<html><head><title>".$this->title."</title>
            <META NAME=keywords CONTENT='".$this->keyw."'>
            <meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
            <link href='".$this->style."' rel='stylesheet' type='text/css' />
            </head><body>";
        }


здесь только начало.... вопрос в том  правильно ли  я объявляю переменные var $_SESSION['style']; и нужноли дальше писать  $_SESSION['title'] = ""; или можно просто $'title = "";? 


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
GZep
Дата 1.7.2007, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



Logree, суперглобальный массив $_SESSION - суперглобальный. То есть доступен из любого места в программе в первоначальном виде.
То есть:
Код

echo "<html><head><title>".$_SESSION['title']."</title>



--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
Golda
Дата 1.7.2007, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



1) Переменная $_SESSION  относится к суперглобальным, т.е. видимым из любого места в коде, в том числе и в методах класса. Так что объявлять их переменными класса необходимости нет
2) Если Вы объявите с помощью 

Код

var $_SESSION;


поле класса, оно не будет иметь отношения к суперглобальной переменной $_SESSION. А доступ к нему внутри класса можно получить конструкцией $this->_SESSION 

3) код, который Вы привели, просто не откомпилируется. Нельзя объявить переменную 

Код

var $_SESSION['type'];


Можно только var $_SESSION, а к элементу массива обращаться уже в коде $this->_SESSION['type']

Ну и, стоит подумать, нужно ли в файле класса вызывать вот так напрямую безусловно session_start(). Вдруг будет вариант использования, при котором Вам захочется что-то изменить в сессии в другом месте (например, поменять имя сессии)

Добавлено через 1 минуту и 21 секунду
Sorry, GZep, не успела увидеть Ваш пост  smile 


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
Logree
Дата 1.7.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



тоесть в этом файле можно вообще не использовать массив $_SESSION? просто пишем как обычно но откраваем session_start() вот так...?
Код

<?php
    function db_connect($host,$pass,$user,$base,$query) {
        $mysql = mysql_connect($host,$user,$pass);
        if ($mysql) or die('connection failid');
        $db = mysql_db_name($base);
    }
    session_start();
    class main_page {
        var $title;
        var $keyw;
        var $style;
           
        function _construct() {
         $title = "Форум - Ghost";
         $keyw = "Форум";
         $style = "style/css.css";   
        }
        
        function header($title, $keyw) {
            echo "<html><head><title>".$this->title."</title>
            <META NAME=keywords CONTENT='".$this->keyw."'>
            <meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
            <link href='".$this->style."' rel='stylesheet' type='text/css' />
            </head><body>";
        }


 а в других уже обращяться... через массив....  врорде бы всё понял я уточнить....

если я функцию db_connect внесу в класс то придётся объявлять через var переменые $host,$pass,$user,$base,$query,$mysql
?
и ещё вопрос... я прочитал статью про php 6 и  я не доконца понял вот этот отрывок:
Код

'var' будет полным алиасом 'public' 

Var используется в классах PHP 4. В объектном подходе PHP 5, употребление var 
вызывает ошибку уровня E_STRICT. В PHP 6 предупреждение об ошибке будет устранено 
и var станет полным синонимом public. Это вполне нормальное решение, однако, те, 
кто «подогнал» свои скрипты под PHP 5, сделали в этом плане лишнюю работу. 



я знаю что такое public, privat но я понял это так что вышеприведённый отрывок не будет компелироваться из-за var в hp 5&

Это сообщение отредактировал(а) Logree - 1.7.2007, 18:31


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
sTa1kEr
Дата 1.7.2007, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Что-то вы перемудрили.
Цитата(Logree @  1.7.2007,  17:43 Найти цитируемый пост)
        function _construct() {
         $title = "Форум - Ghost";
         $keyw = "Форум";
         $style = "style/css.css";   
        }

Если вы хотите поместить значение в поле текущего объета, то надо использовать указатель $this
Код

        function _construct() {
         $this->title = "Форум - Ghost";
         $this->keyw = "Форум";
         $this->style = "style/css.css";   
        }

Цитата(Logree @  1.7.2007,  17:43 Найти цитируемый пост)
        function header($title, $keyw) {
            echo "<html><head><title>".$this->title."</title>
            <META NAME=keywords CONTENT='".$this->keyw."'>
            <meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
            <link href='".$this->style."' rel='stylesheet' type='text/css' />
            </head><body>";
        }

Зачем передавать параметры методу, если вы их не используете?
Цитата(Logree @  1.7.2007,  17:43 Найти цитируемый пост)
если я функцию db_connect внесу в класс то придётся объявлять через var переменые $host,$pass,$user,$base,$query,$mysql
?

Аналогично. Если вы будете предавать переменные через параметры, то объявлять их нету смысла.
Цитата(Logree @  1.7.2007,  17:43 Найти цитируемый пост)
я знаю что такое public, privat но я понял это так что вышеприведённый отрывок не будет компелироваться из-за var в hp 5&

Нет, все будет прекрасно работать и в PHP 5, но будет выдаватся нотис E_STRICT.
Сообщения об ошибках
Цитата

Начиная с PHP 5 был объявлен новый уровень ошибок - E_STRICT со значением 2048. Он позволяет PHP давать советы по способности взаимодействия и будущей совместимости вашего кода, что позволит вам придерживаться наилучшего метода написания кода. Т.е. сообщение уровня E_STRICT предупредит вас, если вы будете использовать устаревшие функции, которые в будущем будут удалены. 

Замечание: E_ALL не включает E_STRICT, так что по умолчанию этот уровень ошибок выключен 

PM MAIL   Вверх
Golda
Дата 1.7.2007, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Logree, Вам достаточно хранить данные во время работы скрипта или нужно сохранять их между двумя запусками скрипта для одного пользователя?

В первом случае используйте поля класса (см. пост sTa1kEr), и session_start() не нужен (работа с сессиями не нужна). Во втором - храните данные в сессии. Тогда, что-то типа

Код

   class main_page {
           
        function _construct() {
         if (!isset($_SESSION['title'])) $_SESSION['title'] = "Форум - Ghost";
         if (!isset($_SESSION['keyw'])) $_SESSION['keyw'] = "Форум";
         if (!isset($_SESSION['style'])) $_SESSION['style'] = "style/css.css";   
        }
        
        function header() {
            echo "<html><head><title>".$_SESSION['title']."</title>
            <META NAME=keywords CONTENT='".$_SESSION['keyw']."'>
            <meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
            <link href='".$_SESSION['style']."' rel='stylesheet' type='text/css' />
            </head><body>";
        }


Это сообщение отредактировал(а) Golda - 1.7.2007, 22:09


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
Logree
Дата 2.7.2007, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



Всё, вроде дошло... спасибо всем...

2 Golda мне нужно второе т.к я задумал написать форум.. там ессественно будет регистррация... 
просто наверное я привёл неудачный пример кода...(для меня неудачный)



--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.