Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Класс db_con


Автор: Muerto 20.8.2010, 16:35
Не актуальная информация

Автор: SoWa 20.8.2010, 16:44
Цитата(Muerto @  20.8.2010,  16:35 Найти цитируемый пост)
init()дает классу параметры как пароль к базе, название базы и тп.

Я бы это вписал в __construct

Цитата(Muerto @  20.8.2010,  16:35 Найти цитируемый пост)

include('./classes/db_con.php');
$myconn=new db_con();
echo $myconn->db_stats();
$query= $myconn->do_query("insert into test (message) values('|~|вася ыыы ' ' ' ' ' |~|')");
$myconn->close_conn();
echo $myconn->db_stats();

Мне не очевидно совсем... Если у тебя есть метод init & open_conn, то где они вызываются в примере?

Цитата(Muerto @  20.8.2010,  16:35 Найти цитируемый пост)
minus_conn()-- к сетчику подключенийadd_query()++ к счетчику запросов

Если это нужно для статистики - то оставь. А если фишка без значимого применения - то зачем?

Автор: Muerto 20.8.2010, 16:56
Если у тебя есть метод init & open_conn, то где они вызываются в примере?

Что бы не писать когда я использую этот класс лишний код, do_query($thequery) делает init() и open_conn() если не открыто подключения

А фишка для подсчета подключений и запросов, это больше для проверки эффективности кода чтоли... в целях оптимизации скрипта

Автор: Muerto 20.8.2010, 23:18
Решил попытаться создать функции которые будут работать с mysqli->prepare

Пока что очень много сложностей...
есть функция
Код

 function prepare_query($thequery)


которая возвращает мне
Код

 mysqli->prepare($thequery);

к примеру
$query= $myconn->prepare_query("select * from test where id = ?");

Далее нужно делать

$query->bind_param('i', $id);
и $query->execute();


В чем проблема:

Во первым, по вашему дальше стоит сделать две функции или одну?

в любом случае, как мне построить функцию которая будет выполнять 
Код


$query->bind_param('i', $id);


и ещё одну или в той же которая будет делать 
Код

$query->execute();


главная проблема в том что  сейчас bind_param('i', $id); содержит только $id, но если строить глобальную функци, она должна получать любое количество значения...
т.е.  создаем функцию 

Код

prepare_binding($types (string), $values (array));



Но как же мне массив с $values впихнуть  в bind_param('i', $id);

там ведь между каждым символом нужна запятая... explode ',' что ли... в общем хэлп!

Автор: Muerto 20.8.2010, 23:36
Или более простым языком,

работает
Код

 prepare_params('s','hi',$query);


Но глобально написать я не знаю как, 
за место 's' может быть 'sdsssssss' и за место 'hi' может быть массив с данными...

Как же выполнить 
Код

bind_param($types, $values);
 ?

Автор: Muerto 21.8.2010, 00:21
Вот в общем, может кому пригодиться...
Код

    function prepare_query($thequery){
       if(!isset($this->conn_id))
       {
        $this->init();
        $this->open_conn();
       }
        return $this->conn_id->prepare($thequery);
    }
        function prepare_params($types,$values,$thequery){
            $thequery->bind_param($types, $values);
            return $thequery;
    }
    function prepare_execute($thequery){
            $thequery->execute();
             $meta = $thequery->result_metadata();
                while ($field = $meta->fetch_field()) {
    $var = $field->name;
    $$var = null;
    $parameters[$var] = &$$var;
}
            call_user_func_array(array($thequery, 'bind_result'), $parameters);

            while($thequery->fetch()) {
                print_r($parameters);

            }
    }


самая главная проблема теперь за место 
Код

   while($thequery->fetch()) {
                print_r($parameters);

            }


вернуть $thequery, и делать простой fetch_assoc к примеру

Автор: gta4kv 22.8.2010, 19:28
Бред такой бред.
Вы спрашиваете какую бы функцию добавить в класс, который будет использоваться в вашем коде, для ваших, никому не известных, задач.
Где хоть какой то смысл?

Автор: Sanchezzz 24.8.2010, 09:10
Такой тип задачь нужен только тогда вы пишете свою цмс и хотите сделать много движковый класс бд брехня конечно в основном но везде разные ситуации бывают.
М

имхо легче написать обертку на каждый класс по классу и в зависимости от настроек юзать его. хотя обычного mysql и mysqli достаточно. Даже если на хотинге нет этого mysqli это плохой хостинг и уже не твоя проблема что его нет. Уже давным давно забил на тех укого нет mysqli.

Автор: Photon 26.8.2010, 20:20
А не проще bind_param и execute выполнять в одной функции?

http://pastebin.ru/314296

Автор: Muerto 5.9.2010, 23:05
Доделал наконец то класс, вывожу результат вывода статического метода help

Functions list of db_con class
static function getInstance();
Create Singleton of the class
private function __construct();
Set's cache directory(place), and the cache extensions for file and variables cache
private function __clone();
Prevent object cloning
public function init_conn($db_uname,$db_pass,$db_name,$db_host='localhost',$db_cs='utf8',$special_escape ='x@x');
Initiates the connection variables
public function open_conn();
Open the connection
public function close_conn();
Kills and then closes the connection
public function get_sp_esc();
Get the CS from the class
public function set_sp_esc($value);
Sets the SC to the class
public function escape($thequery);
Escapes before do the query, using the special escape symbol you decide to use
public function do_query($thequery,$escape=0);
Do specified query, if escape is 1, it will use the escape function to do mysqli_real_escape
public function reset_bind();
Reset the types and params containers
public function var_bind(&$type,&$param);
Prepare the types and parameters, accepting varsiables one by one, adding them to array for func bind_params
public function ar_bind(&$type,&$param);
Prepare the types and parameters, accepting array
public function do_prepare($thequery);
Prepare the statement using ->prepare();
public function bind_params();
Bind the parameters with the function bind_param, before you use it, use ar_bin or var_bind functions, and of course after do_prepare
public function execute();
Executes the prepared statement with the binded parameters if there is...
public static function fetch_it($theresult,$type);
Fetch the result of a query, $type can be 'assoc', 'object', 'row', 'array' .
public function fetch_result($theresult);
Fetch the result with assoc method, for development purposes!
Usage Examples:
1. DEFINE('SC','x@x');
$db=db_con::getInstance();
$db->init_conn('root','lqsym','db1','localhost','utf8',SC);
$data=$db->do_query("INSERT INTO test (message) VALUES('".SC."".str_shuffle("abcdefghijklmnopqrstuvwxyz0123456789")."".SC."')",1);
$db->close_conn();
echo $db->reqs_num;
2.$db=db_con::getInstance();
$db->init_conn('root','lqsym','db1');
$db->do_prepare("INSERT INTO test (message,message2,message3,message4) VALUES(?,?,?,?)");
$db->reset_bind();
$types=array('s','s','s');
$vars=array('message1','message2','message3');
$db->ar_bind($types,$vars);
$onemore_t='s';
$onemore_v='cool';
$db->var_bind($onemore_t,$onemore_v);
$db->bind_params();
$db->execute();
$db->close_conn();

Автор: gta4kv 5.9.2010, 23:58
а ООП в коде так и не пахнет

Автор: Muerto 6.9.2010, 00:09
gta4kv, Наверно нет.
Но что вам там пахнет а что нет, мне говорит очень мало  smile 
Можно даже ткнуть на что то отсюда http://www.phpclasses.org/browse/class/10.html

А вот полноценная система для студентов которая на моем классе работает http://learn-php.ru/m_shaot/?shared=1 
+ класc Benchmark результат которого можно увидеть в самом низу...

Автор: SneG0K 6.9.2010, 00:20
И нафига это все?

Автор: Muerto 6.9.2010, 00:25
SneG0K, Эти функции нужны для того что бы поднимать сайты за 5 секунд и не работать каждый раз с нуля
в конце ээто будет MVC фреймворк на котором я мои проекты лепить буду

Автор: Sanchezzz 6.9.2010, 07:39
ну чисто для себя не плохо.

Автор: enoff 6.9.2010, 07:46
Muerto, и как будет выглядеть экономия времени аж до "за 5 секунд" на примере этого класса?
Цитата(Muerto @  6.9.2010,  01:25 Найти цитируемый пост)
лепить

ключевое слово, надо понимать...

Автор: SneG0K 6.9.2010, 09:37
Muerto, Иуууу, Энджи! А зайти на PEAR или стянуть класс работы с бд допустим из Zend Framework, не?
enoff,  smile 

В разделе "Книги" попросил книгу, уже две недели никто не отвечает.  smile 

Автор: Muerto 6.9.2010, 09:48
enoff, Понимайте , я встречал таких которые говорят, это да ООП , это не ООП.
А что же есть ООП?

Как правило когда мы говорим об ООП мы хотим, и это только мое ИМХО и насколько я понимаю то что делаю:
1. Мы хотим построить то чем сможем пользоваться много раз, и оно сэкономит нам время
2. хотим построить то что можно будет расширять и изменять... (например если я захочу вдруг работать с mysql а не mysqli , мне код менять не нужно целиком на ВСЕХ моих страницах, а только в моем классе!!! или же если мне вдруг ОО стиль mysqli не по душе более(а именно его использует мой класс)...
Но здесь конечно кто то может сказать что и тупой набор функций сможет сделать эту работу... возможно и так!
3. Инкапсюляция - однозначно есть!

4. Наследования здесь как бы нету НО, есть один большой плюс, и это мой оригинальный autoloader, я классы вызываю вот так 
Код

$db=cload('db_con);

И он его уже и заинклюдит и singleton вернет (может кто помнит прикол с PAAMAYIM NEKUDOTAYIM...)

5. Наследия у меня нету в данном классе, хотя теоретически можно было бы singleton вывести из классов...
и полиморфизма здесь нету

Добавлено @ 09:52
SneG0K, Стянуть всегда все можно, а нужно ли?

Автор: SneG0K 6.9.2010, 09:57
Велосипед из Zend'a с мягким сидением и спинкой, у вашего же велосипеда нет сидения (торчит труба).
Вопрос: на каком велосипеде ездить приятней? Ну, если вы девушка или не той ориентации, то тогда вопрос отпадает.

В качестве учебного примера можно и написать такой класс, но не пользоваться им. Видите-ли, все уже придумали до нас.

Добавлено через 42 секунды
Цитата(Muerto @  6.9.2010,  08:48 Найти цитируемый пост)
процедурный стиль mysqli не по душе

 smile  smile Мега!

Добавлено через 3 минуты и 45 секунд
Код

$db=cload('db_con);

Это вернет только ошибку.

Добавлено через 3 минуты и 57 секунд
Ох, какой я придирчивый.

Автор: Muerto 6.9.2010, 10:08
SneG0K, Имелось ввиду объекто-орентированый стиль работы с mysqli , это очепятка


А это вернет ошибку только у вас!
Код

$db=cload('db_con);

Потому что вы не разработали функцию cload  smile 

Автор: SneG0K 6.9.2010, 10:12
Цитата(Muerto @  6.9.2010,  09:08 Найти цитируемый пост)
Потому что вы не разработали функцию cload

Да нет. У вас это тоже не будет работать. Закрываться кавычки тоже надо

Автор: Muerto 6.9.2010, 10:17
SneG0K, Наслаждайтесь http://learn-php.ru/m_shaot/ так же снизу можете увидеть насколько быстро мой мини фреймворк пашет

А патом ваш ZEND запустите, и дайте знать как быстро сгенерируется аналог того что я вам выдал, да нет, вы просто hello world сделайте

Автор: enoff 6.9.2010, 10:17
mysqli как раз предоставляет объектно-ориентированный интерфейс.
Цитата(Muerto @  6.9.2010,  10:48 Найти цитируемый пост)
это мой оригинальный autoloader

в каждом вашем сообщении можно наблюдать полную уверенность в своей оригинальности и неповторимости smile 


Гради Буч.
Объектно-ориентированный анализ и проектирование.
http://www.helloworld.ru/texts/comp/other/oop/index.htm

Добавлено через 4 минуты и 49 секунд
Muerto, А насколько ваш фреймворк помог в разработке?
а зачем на зенде хеллоу ворд делать?
Вы сравните скорость разработки какой-нибудь большой системы на зенде и с вашим фреймворком.

Автор: SneG0K 6.9.2010, 10:24
Цитата(Muerto @  6.9.2010,  09:17 Найти цитируемый пост)
Наслаждайтесь

 smile Насладился! Подставил в поле логин ' or 1=1/* и насладился)))
enoff, Спасибо))

Добавлено через 1 минуту и 11 секунд
Цитата(Muerto @  6.9.2010,  09:17 Найти цитируемый пост)
насколько быстро мой мини фреймворк пашет

Он просто прелесть  smile 

Автор: Muerto 6.9.2010, 10:29
SneG0K, И что вы этим получили по вашему  smile 

Код

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL auto_increment,
  `login` varchar(100) character set utf8 NOT NULL,
  `password` varchar(15) character set utf8 NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `email` (`login`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=24 ;

--
-- Dumping data for table `users`
--

INSERT INTO `users` (`id`, `login`, `password`) VALUES
(23, ''' or 1=1/*', '123');



Кто кого умней?  smile 

Вы бы хоть переводчик посмотрели, там у меня и логин и регистрация в одном месте, если вы не зарегины вас зарегит, а если зарегины, вас просто впустит =-)
Если логин существует а пароль левый, вас не впустит!

Вы не понимайте всю прелесть do_query("insert....",1); + функцию escape  smile 

Автор: enoff 6.9.2010, 10:31
SneG0K,  smile 
тоже мысль была, только я поле ввода не победил smile

Добавлено через 1 минуту и 44 секунды
Muerto, этот запрос вывалится с ошибкой, копнуть дальше и получим полной контроль над вашей 
Цитата(SneG0K @  6.9.2010,  11:24 Найти цитируемый пост)
Он просто прелесть


Автор: Muerto 6.9.2010, 10:34
enoff, Да можете играться сколько хотите, когда получаем $_POST
идет фильтровка самая базовая через htmlspecialchars которая в общем не является защитой от иньекций, затем функция escape берет каждую ячейкую которую я засунул между волшебными символами, и фильтрует её через mysqli_real_escape

Что бы облегчить вам взлом, добавление пользователя выглядит вот так:
Код

$db->do_query("insert into users (login,password) VALUES ('".SC."".$login."".SC."','".SC."".$pass."".SC."')",1);


Перед этим идет поиск пользователя
Код

$data=$db->do_query("select * from users where login='".SC."".$login."".SC."'",1);


Или же вы думайте что разработчики php полные придурки, и нифига не понимают в OOP , и придумали никому не нужную функцию mysqli_real_escape?

НИФИГА ВЫ НЕ ВЗЛОМАЛИ КАК ВЫ ПОНЯТЬ НЕ МОЖЕТЕ!!!  smile 

Автор: SneG0K 6.9.2010, 10:37
Цитата(Muerto @  6.9.2010,  09:29 Найти цитируемый пост)
SneG0K, И что вы этим получили по вашему

Вау!

Автор: Muerto 6.9.2010, 10:39
читаем ниже

Автор: SneG0K 6.9.2010, 10:42
Цитата(Muerto @  6.9.2010,  09:34 Найти цитируемый пост)
 когда получаем $_POST
идет фильтровка самая базовая через htmlspecialchars, 

Что вы за ахинею придумали?
Класс БД должен защищаться от SQL иньекций, функции работы с таблицей должны отталкиваться от класса БД и защищать только от XSS

ЧТо это еще за ахинея, когда все делается в одном месте? Каждый компонент должен заниматься своим делом и защищать себя сам.

Добавлено через 1 минуту и 1 секунду
Цитата(Muerto @  6.9.2010,  09:39 Найти цитируемый пост)
SneG0K, Ну блин сколько же вам писать, что вас никуда таким запросом не впустило?

Это я и без тебя понял.
Цитата(Muerto @  6.9.2010,  09:39 Найти цитируемый пост)
Я вам сам урок могу дать по SQL-injection , вы здесь никого ничем не удевили

Начинай, а я послушаю.

Добавлено через 1 минуту и 33 секунды
Muerto, ты небось выходец и хакзоны или хакер.ру ?

Автор: Muerto 6.9.2010, 10:48
SneG0K, Ну блин сколько же вам писать, что вас никуда таким запросом не впустило?
или вам по пальцам продолжать объяснять?

Я вам сам урок могу дать по SQL-injection , вы здесь никого ничем не удевили

Я вам объясню, так как вы не понимайте что оно вам там пишет

Вы сделали следующее
1. в логин вы впихнули 
' or 1=1/*
Пароль 123
2.  Скрипт сделал
$login=htmlspecialchars($_POST['login']); (Но может этого и не делать, это значения НЕ ИМЕЕТ)
Код


$data=$db->do_query("select * from users where login='".SC."".$login."".SC."'",1);


Он не нашел ваш логин, и затем он сделал

Код

$db->do_query("insert into users (login,password) VALUES ('".SC."".$login."".SC."','".SC."".$pass."".SC."')",1);


т.е. он зарегил вас!
Затем впустил в систему...

Типер вы можетей зайти на /?logout
И попытаться ввести 
' or 1=1/*
Пароль 12

Вам выдаст ошибку что ваш пароль не верный...

если введете
' or 1=1/*
Пароль 123

вы просто войдете в  ВАШ аккаунт

Автор: SneG0K 6.9.2010, 10:50
Цитата(Muerto @  6.9.2010,  09:48 Найти цитируемый пост)
вы просто войдете в  ВАШ аккаунт

Адмирал ясен хер!

Автор: cutwater 6.9.2010, 10:51
Цитата(SneG0K @  6.9.2010,  09:42 Найти цитируемый пост)
Muerto, ты небось выходец и хакзоны или хакер.ру ? 


Дайте уже ребенку писать велосипеды. Читаю товарища уже не первый день, это более чем забавно. Впрочем с опытом пройдет. Многие в  страдали юношеским максимализмом, велосипедописанием, уверенностью в том что делают лучше чем тысячи разработчиков по всему миру. Это проходит...

Добавлено через 1 минуту и 43 секунды
Когда / Если товарищ Muerto на нормальную работу, с постоянным code review и прочими радостями коммандной разработки, его быстро отучат писать велосипеды и думать что умней других и многих.

Автор: SneG0K 6.9.2010, 10:53
Надо открывать ленты на винграде посвященные тем или иным лицам)

Автор: Muerto 6.9.2010, 10:54
Вы пишите:

Что вы за ахинею придумали?
Класс БД должен защищаться от SQL иньекций, функции работы с таблицей должны отталкиваться от класса БД 

И на какой основе вы это пишите?
Класс BD ничего кроме mysqli_real_escape не использует и не знает

Я ему ставлю метки, где нужно отфильтровать, и он это делает через mysqli_real_escape

а
Код


$login=htmlspecialchars($_POST['login']);

это часть скрипта , нужно от XSS вообще то, что бы мне скрипты не повставляли но на BD не влияет никак
кстати стоит помнить что на данный момент здесь  НЕ MVC

хоть и есть некий "контроллер"

Добавлено @ 10:58
cutwater, А я ничего не думаю, я написал класс исключительно для себя, он выполняет свои цели отлично.

Здесь вообще пол темы флуда...

Ну вы говорите велосипеды, и уже все есть? так какого вы тут все делайте? идите качайте ZEND или YII и будет вам счастье, ещё есть сайт как
http://www.phpclasses.org/
там вы ещё и классов накачайте, готовых.

И потом вы себя программистами назовете, и скажите что знайте что такое OOP ?

А я буду в сторонке смотреть на эту и жалеть вас.

Автор: enoff 6.9.2010, 11:00
Muerto, от XSS то нужно, только правильнее будет в другом месте это делать, а не перед добавлением в базу.

Автор: SneG0K 6.9.2010, 11:01
Цитата(Muerto @  6.9.2010,  09:54 Найти цитируемый пост)
И потом вы себя программистами назовете, и скажите что знайте что такое OOP ?

Мы уже давно написали свои велосипеды, откатались на них и купили автомобили smile 

Автор: Muerto 6.9.2010, 11:08
enoff, Вы однозначно правы,
"принято" сохранять информацию в "чистом виде" , т.е. именно фильтровка mysqli_real_escape
а затем уже при выводе инфы, запускать разные фильтровки...
к примеру тот же htmlspecialchars

нужно это от XSS
К примеру в комментариях к новостям иногда можно впихнуть
Код

'<script>alert("asdfasdf")</script>

Или
Код

"<script>alert('asdfasdf')</script>

Зависит как там у них вывод инфы идет, и это выкинет сообщение

Такие сайты вообще для  поднятия ТИЦ и PR использовать можно, вставляя ссылки на свой сайт...

Почему же здесь я фильтрую перед тем как впихиваю в базу?
Ну собственно, потому что в данном случае оно для меня совершенно не имеет значения

Автор: cutwater 6.9.2010, 11:10
Цитата(Muerto @  6.9.2010,  09:54 Найти цитируемый пост)
это часть скрипта , нужно от XSS вообще то, что бы мне скрипты не повставляли но на BD не влияет никак


За защиту от XSS должен отвечать уровень представления / view но никак не обработки данных. Ибо работать необходимо, удобно и правильно с raw данными.

Но Вы же не считаетесь с чужими мнениями более опытных людей.

P.S. именно поэтому столько матерились в сторону всяких magic quotes и прочих плюшек, якобы облегчающих жизнь.

Добавлено через 1 минуту и 12 секунд
Цитата(Muerto @  6.9.2010,  10:08 Найти цитируемый пост)
Почему же здесь я фильтрую перед тем как впихиваю в базу?
Ну собственно, потому что в данном случае оно для меня совершенно не имеет значения 


Это Вы сейчас так говорите, пока не столкнетесь с проблемами. И будет лишнего кода, заплатка на заплатке и заплаткой погоняет.

Добавлено через 1 минуту и 52 секунды
P. P. S. Как я уже говорил, бесполезно спорить с человеком, который слышет только себя.

Автор: Muerto 6.9.2010, 11:16
cutwater, Это не MVC , и этот проект мелкий и нужен только не многим студентам, я в него мысль не вкладывал, хотя конечно возможно стоит сразу как бы всегда верным путем следовать


А что бы здесь не говорили что я пусто слов, вот вам за 15 секунд использование XSS на сайте который по гуглю нашел

Сюрприз для хакеров вроде SneG0K
http://www.autobaza.ru/search.php?k=%22%3E%3Ca+href%3Dhttp%3A%2F%2Fforum.vingrad.ru%3E%C7%E4%E5%F1%FC+%E1%FB%EB+%EC%E5%E3%E0+%F5%E0%F6%EA%E5%F0+muerto%3C%2Fa%3E

Автор: SneG0K 6.9.2010, 11:16
Цитата(cutwater @  6.9.2010,  10:10 Найти цитируемый пост)
Но Вы же не считаетесь с чужими мнениями более опытных людей.

Да Вы, какой вы опытный! Вы дилетант! Вы даже Hello World и использованием фреймворков не писали! И Enoff дилетант! И я! Мы все жалкие дилетанты! И вообще мы нифига не шарим! Класс работы с бд не должен быть удобным, он должен быть уникальным и плевать, что не удобным.

Автор: enoff 6.9.2010, 11:16
cutwater, тут много раз вопрошали, зачем все эти велосипеды, но внятного ответа так и не было...

Muerto, зачем что-то городить, когда mysql_real_escape_string + intval защитит от инъекций, а htmlspecialchars от xss? Лишние телодвижения здесь нет никакого оправдания...

Автор: SneG0K 6.9.2010, 11:17
Цитата(Muerto @  6.9.2010,  10:16 Найти цитируемый пост)
Сюрприз для хакеров вроде SneG0K

И че?

Добавлено через 1 минуту и 22 секунды
Этот парень мне supervalislav'a напоминает smile 

Автор: Muerto 6.9.2010, 11:22
Цитата(enoff @ 6.9.2010,  11:16)
Muerto, зачем что-то городить, когда mysql_real_escape_string + intval защитит от инъекций, а htmlspecialchars от xss? Лишние телодвижения здесь нет никакого оправдания...

Ну у меня оно так и есть, только порядок иной...

Хотя в том что я вам описал явно не хватает пару вещей и это к примеру какой нибудь валидатор которые будет смотреть на паттерны...
И говорить если пароль соответствует политике сайта, а так же логин...

Автор: enoff 6.9.2010, 11:23
SneG0K, только его вспоминал smile 

Muerto, можно и админам написать, а не показывать свою крутость. К тому же некоторые ща налетят и будут мучать этот сайт.

Автор: cutwater 6.9.2010, 11:23
Цитата(Muerto @  6.9.2010,  10:22 Найти цитируемый пост)
пароль соответствует политике сайта


Просто в восторге от сайтов которые допускают в паролях только a-z 0-9 _ -, не допускают пробелы и спецсимволы. И обязательно требуют наличия цифр и символов разных регистров.

Автор: enoff 6.9.2010, 11:24
Это прекрасно работает и без дополнительных вещей. Время не экономит, код становится непонятнее...

Автор: SneG0K 6.9.2010, 11:25
Цитата(cutwater @  6.9.2010,  10:23 Найти цитируемый пост)
разных регистров. 

и в итоге при проверке переводят в нижний регистр  smile

Добавлено через 2 минуты и 31 секунду
Так-с! Давайте эту тему ко мне во флейм  smile 

Автор: Muerto 6.9.2010, 11:28
enoff, Вы в гугле поиск сделайте, http://www.autobaza.ru/search.php и поймете что я здесь никому ничего не обновил, может только открыл нечто новое для тех кто не знаком с XSS , и что через него можно поднять ТИЦ

SneG0K, Ну в нижний регистр это уже ужас, я так на своих проектах никогда не делаю
Но не люблю когда в логине на форуме есть симфолы вроде #!@%^ нафиг такое разрещать? у нас тут че демократия?
Программирование это диктатура, и диктатор здесь я ©

Автор: SneG0K 6.9.2010, 11:29
Цитата(Muerto @  6.9.2010,  10:28 Найти цитируемый пост)
когда в логине

Напомните мне, когда это мы говорили про логин?

Добавлено через 29 секунд
Цитата(Muerto @  6.9.2010,  10:28 Найти цитируемый пост)
enoff, Вы в гугле поиск сделайте, http://www.autobaza.ru/search.php и поймете что я здесь никому ничего не обновил, может только открыл нечто новое для тех кто не знаком с XSS , и что через него можно поднять ТИЦ

Так это еще и не ты нашел smile

Добавлено через 1 минуту и 15 секунд
Цитата(Muerto @  6.9.2010,  10:28 Найти цитируемый пост)
и что через него можно поднять ТИЦ

Через него не только ТИЦ поднимают.

Автор: Muerto 6.9.2010, 11:35
Давайте как то ближе к теме!

Значит судя по вашим словам, свои классы писать смысла нету, если можно найти готовое в гугле? smile 

Автор: SneG0K 6.9.2010, 11:39
Цитата(Muerto @  6.9.2010,  10:35 Найти цитируемый пост)
вои классы писать смысла нету

Смысл только ради обучения!
Zend_Db представляет функционал намного удобней, чем ваш этот. Есть еще смысл, когда заказчик требует полностью без использования левых компонентов, но в таких случаях я тоже ориентируюсь на уже готовые решения.

Автор: cutwater 6.9.2010, 11:39
Цитата(Muerto @  6.9.2010,  10:35 Найти цитируемый пост)
Значит судя по вашим словам, свои классы писать смысла нету, если можно найти готовое в гугле?


Кривые и велосипедные именно.
Когда то что вы делаете реализовано по человечески при помощи mysqli, PDO, yet another Wpapper / ORM.

Когда prepared statements реализованы на уровне движка БД и таки имеют смысл и оптимизируют одинаковые запросы с различиями в параметрах, в отличие от Вашего велосипеда, который кроме того же еще и имеет не очевидный дизайн и кроме вас никому не нужен.

Автор: Muerto 6.9.2010, 11:50
cutwater, Ну если мы оставим таких гигантов как ZEND где вы толком один файл который у него там за работу с базой и не найдете, ну по крайней мере я не нашел...

Мой класс работает с базой данных через mysqli
использует ооп модход работы с mysqli

Он облегчает процесс фильтровки данных функцией mysqli_real_escape путем do_query + escape
Он умеет подготавливать выражения, причем не нужно сразу указывать
Код

$stmt-> bind_param('sdsdsd',$param1,$param2,$param3,$param4,$param5...



А можно делать нечто
Код

$var1='s';$var2='cool';
$db->var_bind($var1,$var2);

Но ведь мы хотим (?,?,?,? и это то что мы заготовили, а добавил я только один, как оно работать будет?
Дальеш можно по одному, а можно просто список дать
Код

$types=('s','d','s','d'.....
$params=('cooool','123'

И затем 
$db->ar_bind($types,$params)
$db->bind_params(); мы закрываем этот процесс, и это сделает нам bind_param со всеми нашими параметрами
если мы изменем $types,$params то изменим и параметры, как если бы мы делали это в ручную
И дальше тупо
$db->execute();


Автор: cutwater 6.9.2010, 11:52
Цитата(Muerto @  6.9.2010,  10:50 Найти цитируемый пост)
где вы толком один файл который у него там за работу с базой и не найдете,


Вы сломали мой парсер....

Автор: SneG0K 6.9.2010, 11:55
Цитата(Muerto @  6.9.2010,  10:50 Найти цитируемый пост)
И дальше тупо

Согласен. Тупо!

Автор: Muerto 6.9.2010, 11:56
cutwater, Судя по вашему сообщению, вы думайте что я изобретаю mysqli?
нет!
Я всего лишь использую mysqli через мой класс, я ничего особого не изобритаю, кроме как решение самых обычных и распостраненых задач что и видно с описания класса и его функций
он может работать как с mysqli так и с PDO или с mysql
Я думаю и с текстовым файлом тоже можно... смысл в том что я всегда смогу сменить

Автор: enoff 6.9.2010, 11:57
действительно smile 
Код

query("INSERT INTO `msg`(`user_id`, `msg`) VALUES(%d, %s)", $id, $msg); //по мне, лучше было бы подобное.

И часто вы так запросы составляете, как постом выше?

Автор: Muerto 6.9.2010, 12:00
Цитата(enoff @ 6.9.2010,  11:57)
действительно smile 
Код

query("INSERT INTO `msg`(`user_id`, `msg`) VALUES(%d, %s)", $id, $msg); //по мне, лучше было бы подобное.

И часто вы так запросы составляете, как постом выше?

Ну а кто против? так конечно же можно делать, и возможно нужно иногда

Но если вы строите класс, то вам нужно как то обобщить эти случая
а что если мне нужно завтра не два параметра а 30?

Автор: enoff 6.9.2010, 12:03
Muerto, и в чем проблема? функция принимает неопределенное количество параметров, формирует запрос исходя из плэйсхолдеров и параметров, после запроса.

Автор: gta4kv 6.9.2010, 12:39
Цитата(SneG0K @ 6.9.2010,  11:17)

Добавлено @ 11:18
Этот парень мне supervalislav'a напоминает smile

 smile  smile поржал с утреца

Добавлено через 3 минуты и 40 секунд
Насчет "не ООП", ну так вот - засунуть все стандартные функции mysqli в свой класс это не есть ООП. 

Автор: Muerto 6.9.2010, 12:46
gta4kv, опять же, что такое ооп по вашему?

Автор: gta4kv 6.9.2010, 12:53
Я не умею умные длинные посты писать, но, еще раз повторюсь, сделать класс который будет выполнять стандартные функции под другим именем это кривой велосипед

на предыдущих страницах писали - что понимание придет со временем

Автор: Muerto 6.9.2010, 13:18
gta4kv, значит во первых вы считайте что вспомогательные классы это не ооп, и право на жизнь не имеет?
и мне каждый раз общение с базой с нуля нужно делать на основе чистой mysqli ?

Далее, с чего вы взяли что все что мой класс делает это лишь использует mysqli и ничего более?

Как бы если я впишу $db->do_query("myquery",1);
то вы считайте что метод в классе выглядит вот так:

Код

public function do_query($thequery){
        return  $this->conn_id->query($thequery);


А на самом деле вот так:

Код

public function do_query($thequery,$escape=0){
       if(!isset($this->conn_id))
       {
        if(!isset($this->ifinit))trigger_error('Please do init_conn.', E_USER_ERROR);
        $this->open_conn();
       }
        $this->last_qresult=( $escape==1 )?( $this->conn_id->query($this->escape($thequery)) ):( $this->conn_id->query($thequery) );
           $this->reqs_num++;
        if(!$this->last_qresult)
        {
        $this->close_conn();
        trigger_error('Do_Query Error! code: '.$this->conn_id->errno, E_USER_ERROR);
         }
        return $this->last_qresult;
    }


Т.е. если бы я взял ваш подход, то при каждом запросе я бы писал заново с нуля все что у меня под "на самом деле"

Здесь же есть класс который все это делает для меня, и сокращает код с 1000 строк до 100, и это плохо да?

Автор: cutwater 6.9.2010, 13:22
По-моему поциенту уже объясняли что открывать соединение с базой необходимо в начале и не париться по поводу этого каждый раз при выполнении запроса.

Добавлено @ 13:25
        
Код

        if(!$this->last_qresult)
        {
        $this->close_conn();
        trigger_error('Do_Query Error! code: '.$this->conn_id->errno, E_USER_ERROR);
         }
        return $this->last_qresult;
        


И все таки, что курил автор?

Автор: gta4kv 6.9.2010, 13:27
Да это точно supervladislav, забейте.

Автор: Muerto 6.9.2010, 13:30
cutwater, Да вы это говорили и не раз, можете это проигнорировать, это лично мое предпочтение
Я так делаю потому что я лентяй, у этого есть все же свои преимущества
но теоретически я бы мог в функции init_conn создавать подключение в конце объявления параметров...

В функции __construct я это делать не могу потому что у меня сотни баз данных с разными паролями, максимум что я могу это использовать ini файл или что то другое откуда constructor будет данные грузить, или даже с класса Vars
Но пока что я работаю без ini, хоть и класс ini_Parser я написал...

Добавлено @ 13:31
gta4kv, вы общаетесь с http://www.facebook.com/dckurushin , я здесь на форуме не первый год и не первую тему создаю

Автор: cutwater 6.9.2010, 13:34
Цитата(Muerto @  6.9.2010,  12:30 Найти цитируемый пост)
В функции __construct я это делать не могу потому что у меня сотни баз данных с разными паролями


Сударь не слышал о параметрах?


Цитата(Muerto @  6.9.2010,  12:30 Найти цитируемый пост)
что у меня сотни баз данных с разными паролями


Для одного сайта штоле?

Какой-то бред откровенно говоря. В который раз убеждаюсь в бесполезности общения с поциентом. Удачи =)

Автор: Muerto 6.9.2010, 13:37
cutwater, Да таки криво, я когда цитировал прибавил , что бы выглядело как то поумней и допустил ошибку
Код

 if(!$this->last_qresult)
        {
        $this->close_conn();
        trigger_error('Do_Query Error! code: '.$this->conn_id->errno, E_USER_ERROR);
         }


настоящий оригинал был такой:

Тоже не фонтан но все же

Код

  if(!$this->last_qresult)
        {
        printf("Errorcode: %d\n", $this->conn_id->errno);
        exit();
         }


А сейчас подумал лучше всего таки оставить старое с добавкой потому что trigger  все равно что сделать exit, и будет висеть подключение

Код

  if(!$this->last_qresult)
        {
        printf("Do_Query Error! Errorcode: %d\n", $this->conn_id->errno);
            $this->close_conn();
        exit();
         }


Добавлено @ 13:41
Цитата(cutwater @ 6.9.2010,  13:34)
Цитата(Muerto @  6.9.2010,  12:30 Найти цитируемый пост)
В функции __construct я это делать не могу потому что у меня сотни баз данных с разными паролями


Сударь не слышал о параметрах?


Цитата(Muerto @  6.9.2010,  12:30 Найти цитируемый пост)
что у меня сотни баз данных с разными паролями


Для одного сайта штоле?

Какой-то бред откровенно говоря. В который раз убеждаюсь в бесполезности общения с поциентом. Удачи =)

Какие параметры могут быть у функции
 
Код

private function __construct()
 и как вы их туда передадите? научите пожалуйста...
Обявление идет такое:
$db=db_class::getInstance()


И кто сказал вам что у меня один сайт? с 100 базами? у меня много сайтов, просто я раньше как то их все строил в процедурном стиле

Автор: cutwater 6.9.2010, 13:42
Цитата(Muerto @  6.9.2010,  12:37 Найти цитируемый пост)
  exit();


Жесть... как представлю что такой printf сработает на боевом сайте.... 

Сударь не слышал об исключениях?

Хотя да я забываю, что сударь слышит только свое едино верное мнение.... зачем я тут перед ним распинаюсь. Все равно больше ###кода хорошего и разного.

Автор: Muerto 6.9.2010, 13:45
cutwater, вы про try catch?
Я считаю что если разработчик допустил ошибку скрипт нужно останавливать, или же если произошел сбой на сервере...
в других случаях exit никогда не случиться

Возможно со временем как тут многие пишут, я пойму что я не прав, и это как шоу, когда один из героев умер от инфаркта, продолжается все равно

Автор: cutwater 6.9.2010, 13:48
Цитата(Muerto @  6.9.2010,  12:37 Найти цитируемый пост)
 и как вы их туда передадите? научите пожалуйста...
Обявление идет такое:
$db=db_class::getInstance()


в 10й раз повторяю об инициализации базы в начале. из конфига, из переменной whatever.... если так не хочется открывать соединение заранее, да пожалуйста, вызывайте где угодно. параметры можно запомнить. НО это хреновый дизайн.
Ибо писать нормально вы упорно отказываетесь...


Цитата(Muerto @  6.9.2010,  12:37 Найти цитируемый пост)
И кто сказал вам что у меня один сайт? с 100 базами? у меня много сайтов, просто я раньше как то их все строил в процедурном стиле


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

На сим откланяюсь. У меня о Вас сложилось вполне четкое мнение, и больше тратить свое время без пользы на Вас не намерен. 

Автор: gta4kv 6.9.2010, 13:51
Цитата(Muerto @ 6.9.2010,  13:45)
Я считаю что если разработчик допустил ошибку скрипт нужно останавливать, или же если произошел сбой на сервере...

http://phpfaq.ru/error
Это насчет ошибок. Написанное выше бред. Остановить скрипт - да, но выведенная ошибка - ###.

Автор: Muerto 6.9.2010, 13:51
Цитата(cutwater @ 6.9.2010,  13:48)
Ибо писать нормально вы упорно отказываетесь...

А может я вовсе не умею? и вы вашими советами мне ничем не помогайте кроме как сказать что вы можете хорошо а мое ###?


Тут история вообще такая

Мой стиль жизни экономный:

У меня есть тачка снизу рядом с домом, я выйду заведу и поеду...

А у вас стиль жизни другой:

У вас тачка стоит рядом с домом и уже заведенная, и вы не думайте о том что возможно вы сегодня никуда не поедите и бензин сгорит зря!!!

ИМЕННО ОБ ЭТОМ РЕЧЬ

Это и есть самая разница между просто объявить объект класса, или объявить его и создать подключение, без учета того будем делать запросы или нет

Добавлено @ 13:54
Цитата(gta4kv @ 6.9.2010,  13:51)
Цитата(Muerto @ 6.9.2010,  13:45)
Я считаю что если разработчик допустил ошибку скрипт нужно останавливать, или же если произошел сбой на сервере...

http://phpfaq.ru/error
Это насчет ошибок. Написанное выше бред. Остановить скрипт - да, но выведенная ошибка - ###.

Не исключено , пообедаю и почитаю как правильно нужно делать, там чет опять trigger промелькнул... надо будет глянуть...

Вообще мне лично не понятно (я ещё не читал то что дали) , я очень боюсь разных trigger ибо если подключение открыто, а например в вашем подходе оно будет всегда открыто с самого начала, то если мы работает с mysqli подключения сами закрываться не будут в конце работы скрипта в отличии вроде от mysql , и поэтому у нас быстро достигнется maximum connection





Если вы захотите в подобную тему не лишь бы почувствовать насколько вы лучше и обосрать,
то если демонстрировать как это делать вы не хотите, хотя бы давайте ссылки на толковые статьи!

Автор: enoff 6.9.2010, 14:08
советов дано огромное множество, все равно все по-своему. Что такое ООП? Читайте Гради Буча, я ссылку привел.

Добавлено через 23 секунды
 smile 

Автор: Muerto 6.9.2010, 14:18
Кстати на настоящих сайтах где есть норм посещения, у меня вообще все по другому работает....

Я все же скрипт все равно обрываю, но перед этим, я пишу в error log (текстовый файл на сервере) Ошибку, и потом я могу посмотреть когда она произошла, на какой странице с какими параметрами, и код ошибки...

Автор: gta4kv 6.9.2010, 14:18
Цитата

то если мы работает с mysqli подключения сами закрываться не будут в конце работы скрипта

Что мешает в __destruct сделать проверку - открыто ли соединение и закрывать его?

Автор: Muerto 6.9.2010, 14:21
gta4kv, Вы должны понять что у меня сильная нехватка знаний.
Я очень плохо знаком с __destruct

Из того что я читал и слышал, она срабатывает когда мы на объект делаем unset
Но если мы делаем trigger или exit , скрипт обрывается (не на 100% уверен насчет trigger, но вроде так)...


Если я читал в левых источниках, и когда скрипт останавливается не важно как, и создан объект класса, будет вызван __destruct то тогда вы однозначно правы, и я так и сделаю, ибо такой подход проще и лучше... сейчас почитаю

Автор: gta4kv 6.9.2010, 14:22
Тут поможет документация.
http://ru.php.net/exit


Цитата

 Terminates execution of the script. Shutdown functions  and object destructors  will always be executed even if exit() is called. 

Автор: Muerto 6.9.2010, 14:24
gta4kv, Я сформирую вопрос немного иначе...

Когда скрипт обрывается, или заканчивает выполнение автоматический вызываются __destructor всех созданных объектов?


Вы процитировали

will always be executed even if exit() is called. 
А если exit not called 
а 
called trigger_error 
/ скрипт просто закончился

Автор: gta4kv 6.9.2010, 14:25
см. выше.  там есть ответ на вопрос

Добавлено через 7 минут и 3 секунды
как бе, вызываешь триггер еррор и потом экзит.

Автор: Muerto 6.9.2010, 14:43
gta4kv, Спасибо, поигрался немного с __destruct при разных условиях и понял что к чему
У меня кстати целый домейн зареген чисто ради тренеровок =-) http://learn-php.ru

Вот только осталось понять когда и как его использовать...
Вроде бы при работе с БД, самое то...

Но когда у нас класс вроде ini_Parser  то все что у нас есть в классе это массив который содержит данные ini
и через __destruct мы просто можем освободить память как бы... но есть ли в этом какой то смысл? или скрипт сам освобождает память в конце выполнения что скорее всего так и есть?


Судя по http://stackoverflow.com/questions/2251113/should-i-use-unset-in-php-destruct , кроме как закрытия подключений не нужно...

Автор: gta4kv 6.9.2010, 14:55
Цитата

или скрипт сам освобождает память в конце выполнения что скорее всего так и есть?

Ответ по твоей же ссылке6
Цитата

You really don't need to worry about cleaning up your variable declarations in PHP, it's garbage collection takes care of all of that for you

Автор: Muerto 6.9.2010, 14:56
gta4kv, угу, я так и сказал "кроме как закрытия подключений не нужно..."

Автор: cutwater 6.9.2010, 16:35
Цитата(Muerto @  6.9.2010,  13:56 Найти цитируемый пост)
gta4kv, угу, я так и сказал "кроме как закрытия подключений не нужно..." 


Кроме того не знаю откуда вы взяли, что mysqli работает не так как mysql. После выполнения скрипта PHP закрывает все открытые соединения к базе данных, так что ваши беспокойства по поводу утечки соединений напрасны и необоснованы.

Автор: Muerto 6.9.2010, 16:38
cutwater, Вот в этой теме обсуждалось http://forum.vingrad.ru/forum/topic-308721.html
Я когда разрабатывал один из скриптов выскакивали ошибки которые остонваливали скрипт без вызова kill + close
поэтому мне удалось дойди до предела... и вот как бы выходит что автоматом там не закрывает при определенных условиях

Автор: cutwater 6.9.2010, 16:42
Ну быть может тут я не прав, в таком случае конечно mysqli не совсем может быть удобен. Однако насколько я знаю уже в PDO решили эти проблемы и он вполне юзабелен. Я с mysqli на практике не сталкивался, работал с PDO и mysql, поэтому таки могу и ошибаться.

Автор: Muerto 6.9.2010, 16:49
cutwater, Кстати если подумать так, то без вспомогательного класса вроде моего через который я использую mysqli, не только что нужно писать больше кода каждый раз,
а ещё и нету __destruct и надо следить за закрытием каждый раз... а это фактически не возможно, потому что и другие классы и методы могут выкинуть свои ошибки после открытия подключения...


__destruct конечно супер тема, как то я им активно не пользовался раньше...

Автор: cutwater 6.9.2010, 16:51
В динамических языках деструкторы мало применяются, так как время жизни объекта нельзя контролировать.
Для этого есть PDO, посмотрите, полезно будет.

Добавлено через 44 секунды
При чем обертка не только для mysql, что тоже нельзя не исключать. 

Вы все еще используете mysql? тогда мы идем к вам =)

Автор: gta4kv 6.9.2010, 16:53
я кстати не понимаю, зачем ты в каждый класс добавляешь getInstance когда можно сделать самый простой класс для синглетона:

Код

<?php

class singleton
{
    private static $instance = array( );

    private function __constuct() {}
    
    public function getInstance( $class = null )
    {
        if( is_null( $class ) )
        {
            trigger_error( 'Информация о классе отсутствует', E_USER_ERROR );
        }
        if( ! array_key_exists( $class, self::$instance ) )
        {
            self::$instance[ $class ] = new $class;
        }
        return self::$instance[ $class ];
    }
    
    public final function __clone(  )
    {
        trigger_error( 'Клонирование паттерна-одиночки не возможна', E_USER_ERROR );
    }
}

?>


Добавлено через 1 минуту
Цитата

Вы все еще используете mysql? тогда мы идем к вам =) 

Используем.

Автор: cutwater 6.9.2010, 16:58
Цитата(gta4kv @  6.9.2010,  15:53 Найти цитируемый пост)
я кстати не понимаю, зачем ты в каждый класс добавляешь getInstance когда можно сделать самый простой класс для синглетона:


С учетом того что паттерн Singleton зло, то применять его необходимо крайне осторожно и максимально редко. Поэтому обычно хватает одного на приложение. Если уж совсем никак без глобальных переменных. Кроме как для работы с базой в php не знаю где еще может пригодиться. Не встречал на практике, хотя может быть уже и не помню. Хотя еще и настройки...

Другое дело что, например, в python-фреймворке svarga используется концепция environment (окружения), что есть по сути глобальный объект, хотя как один глобальный синглтон для приложения не назови, смысл не изменится.

Автор: gta4kv 6.9.2010, 17:10
С какой это стати Singleton зло? 

Автор: cutwater 6.9.2010, 17:19
Цитата(gta4kv @  6.9.2010,  16:10 Найти цитируемый пост)
С какой это стати Singleton зло?  


С такой же, с какой и применение глобальных переменных. Неосторожное его применение может повлечь за собой неочевидные последствия.

Автор: SneG0K 6.9.2010, 18:32
Цитата(Muerto @  6.9.2010,  13:43 Найти цитируемый пост)
У меня кстати целый домейн зареген чисто ради тренеровок =-) http://learn-php.ru

Круто, а у меня на ноутбуке стоит виртуалка с линуксом на борту smile
Цитата(Muerto @  6.9.2010,  13:43 Найти цитируемый пост)
но есть ли в этом какой то смысл?

Ну, как вам сказать... Вот когда будете писать какой-нить скрипт (типа парсера), который будет работать круглые сутки, тогда поймете какой в этом смысл
Цитата(Muerto @  6.9.2010,  13:56 Найти цитируемый пост)
gta4kv, угу, я так и сказал "кроме как закрытия подключений не нужно..." 

См. выше
Цитата(gta4kv @  6.9.2010,  16:10 Найти цитируемый пост)
С какой это стати Singleton зло?  

Да? С какой это?
Цитата(cutwater @  6.9.2010,  15:58 Найти цитируемый пост)
С учетом того что паттерн Singleton зло

 smile 
Цитата(cutwater @  6.9.2010,  16:19 Найти цитируемый пост)
С такой же, с какой и применение глобальных переменных. Неосторожное его применение может повлечь за собой неочевидные последствия.

Эмммм... Вот как-то не чувствую связи между сингелтоном и глобалками? Сингелтон это не анти-паттерн как-бэ)

Автор: Muerto 6.9.2010, 18:32
gta4kv, Т.е. вы вашим классом предлагайте что бы некий общий класс хранил в себе все singleton моих классов и выдавал их когда нужно?
SneG0K че внатуре? у меня тоже vmware centos 5.5, только кроме этого и vds есть, то что дома и "реал" работают немного иначе, например в той сборке что у меня htaccess не пашет!

Автор: SneG0K 6.9.2010, 18:34
gta4kv, если уж на то пошло, то я бы сделал для каждого паттерна свой класс. Т.е. BasicSingelton, BasicFactory.

Добавлено через 1 минуту и 6 секунд
Цитата(Muerto @  6.9.2010,  17:32 Найти цитируемый пост)
например в той сборке что у меня htaccess не пашет!

Ну, если обе руки левые...

Автор: Muerto 6.9.2010, 18:49
Цитата(SneG0K @ 6.9.2010,  18:34)
gta4kv, если уж на то пошло, то я бы сделал для каждого паттерна свой класс. Т.е. BasicSingelton, BasicFactory.

Добавлено @ 18:36
Цитата(Muerto @  6.9.2010,  17:32 Найти цитируемый пост)
например в той сборке что у меня htaccess не пашет!

Ну, если обе руки левые...

Увы, даже apc на это левую сборку поставить не смог, в php.ini все включено а на деле не пашет =-)

Автор: SneG0K 6.9.2010, 18:55
Цитата(Muerto @  6.9.2010,  17:49 Найти цитируемый пост)
Увы, даже apc на это левую сборку поставить не смог, в php.ini все включено а на деле не пашет =-) 

Ну, так разберись хотя-бы с этим, а потом уже пиши велосипеды.

Автор: cutwater 6.9.2010, 18:56
Цитата(SneG0K @  6.9.2010,  17:32 Найти цитируемый пост)
Эмммм... Вот как-то не чувствую связи между сингелтоном и глобалками? Сингелтон это не анти-паттерн как-бэ)


Я лишь говорил о чрезмерном и неумелом его употреблении. Поверьте встречается и такое.

Связь с глобальными переменными самая прямая, только и того что Singleton более управляем. Так как этот объект глобален, это порождает побочные эффекты функций, что в свою очередь может повлечь за собой трудноуловимые проблемы. Поэтому все хорошо но в меру.

Кроме того, так как из-за существования глобальных объектов поведение функции бывает трудно предсказать, что влечет за собой проблемы при покрытии и тестировании кода.

Автор: Muerto 6.9.2010, 19:01
Цитата(SneG0K @ 6.9.2010,  18:55)
Цитата(Muerto @  6.9.2010,  17:49 Найти цитируемый пост)
Увы, даже apc на это левую сборку поставить не смог, в php.ini все включено а на деле не пашет =-) 

Ну, так разберись хотя-бы с этим, а потом уже пиши велосипеды.

Когда на форуме никто причины не знает, и во всем гугле люди жалуются на подобную проблему без ответа,
Я не собираюсь тратить больше времени чем потратил на это.
если бы я линукс с нуля ставил я ещё понимаю, а так один хер знает что там напихали, и почему оно не пашет мне никто не скажет


По поводу factory и singleton...

А грех ли это их совмещать?

Как бы singleton может и сам инклюдить библиотеку которую я хочу создать...

Автор: cutwater 6.9.2010, 19:05
Цитата(Muerto @  6.9.2010,  18:01 Найти цитируемый пост)
Когда на форуме никто причины не знает, и во всем гугле люди жалуются на подобную проблему без ответа,
Я не собираюсь тратить больше времени чем потратил на это.
если бы я линукс с нуля ставил я ещё понимаю, а так один хер знает что там напихали, и почему оно не пашет мне никто не скажет 


/dev/head /dev/hands

Автор: Muerto 6.9.2010, 19:12
Цитата(cutwater @ 6.9.2010,  19:05)
Цитата(Muerto @  6.9.2010,  18:01 Найти цитируемый пост)
Когда на форуме никто причины не знает, и во всем гугле люди жалуются на подобную проблему без ответа,
Я не собираюсь тратить больше времени чем потратил на это.
если бы я линукс с нуля ставил я ещё понимаю, а так один хер знает что там напихали, и почему оно не пашет мне никто не скажет 


/dev/head /dev/hands

Ну тебе повезло, как родился так со знаниями php,  и управлением серверов и тп.

Автор: SneG0K 6.9.2010, 19:13
Обалдеть, не установить на линукс апач и php  smile 

Автор: Muerto 6.9.2010, 19:14
Цитата(SneG0K @ 6.9.2010,  19:13)
Обалдеть, не установить на линукс апач и php  smile

Это ты кому?
 у вас тут мания виличия о обсирания ? о великие ?

Автор: cutwater 6.9.2010, 19:15
Цитата(Muerto @  6.9.2010,  18:12 Найти цитируемый пост)
вот те Php.ini


казалось бы при чем тут php.ini к .htaccess ?


Цитата(Muerto @  6.9.2010,  17:32 Найти цитируемый пост)
например в той сборке что у меня htaccess не пашет!


Вам к этому больше нечего добавить?

@see http://www.rsdn.ru/Info/Howtoask.xml

Автор: SneG0K 6.9.2010, 19:16
Цитата(Muerto @  6.9.2010,  18:12 Найти цитируемый пост)
Ну тебе повезло, как родился так со знаниями php,  и управлением серверов и тп.

Он родился с левой и правой рукой, а еще с головой.
Цитата(Muerto @  6.9.2010,  18:14 Найти цитируемый пост)
Это ты кому?

"тыкать" друзьям свои будешь!
Цитата(Muerto @  6.9.2010,  18:14 Найти цитируемый пост)
у вас тут мания виличия о обсирания ? о великие ?

Думаешь, тут пишут люди тупее тебя? Когда тебе что-то говорят, прислушивайся, а не корчи из себя неизвестно что!

Автор: cutwater 6.9.2010, 19:17
Цитата(Muerto @  6.9.2010,  18:14 Найти цитируемый пост)
Это ты кому?
 у вас тут мания виличия о обсирания ? о великие ?


Кто виноват, ести ТЫ ниасилил?


Да вы хам, сударь. На ты вам никто обращаться не разрешал. Учитесь уважению, общению в интернетах, правильной реакции на ответы вам.
И читайте ссылку что я дал выше.

Автор: SneG0K 6.9.2010, 19:18
Цитата(cutwater @  6.9.2010,  18:15 Найти цитируемый пост)
казалось бы при чем тут php.ini к .htaccess ?

 У него наверное .htaccess на nginx не работает и никто не знает почему!

Автор: Muerto 6.9.2010, 19:24
Да вы ещё убейте за то что я вас в php.ini послал а не в httpd.conf или ещё куда то. (кстати htaccess уже пашет, благо есть норм форумы ещё)
Тема закрыта, форум флудеров, нефига по делу не скажут не помогут, только срач и флуд

Автор: SneG0K 6.9.2010, 19:33
Цитата(Muerto @  6.9.2010,  18:24 Найти цитируемый пост)
за то что я вас в php.ini послал

Нас еще и послали smile 

Автор: cutwater 6.9.2010, 19:43
Цитата(SneG0K @  6.9.2010,  18:33 Найти цитируемый пост)
Нас еще и послали smile  


Да уж... надо открывать на форуме заповедник особо адекватных людей. =)

Автор: Muerto 6.9.2010, 19:44
Вот ваше истинное лицо!
Человек возможно плохо знает php, а вы его идиотом обзывайте, ну-ну
user posted image
Дружелюбный форум...
Насколько я помню это раздел общих вопросов а не профи...

Автор: cutwater 6.9.2010, 19:46
Muerto, что ж у нас приличный форум, обстоятельства не позволяли сказать это как бы при всех. А давно хотелось. Если бы Вы были не настолько глупы, и умели осознавать свои ошибки, возможно были бы более успешны и в изучении php. Вас же никто не винит за "незнание", но за ваше отношение.

Автор: SneG0K 6.9.2010, 19:46
Muerto, если человек плохо знает PHP, то какого хрена он не слушает более опытных людей?
У меня бабушки такие под подъездом сидят, то нихрена не знаю, но считают что самые опытныеsmile

Автор: Muerto 6.9.2010, 19:52
Если вы почитайте ваши ответы мне, то вы увидите что вы мне информативных ответов не даете, а только говорите :
какой я тупой, плохой, и что я нифига не понимаю, а мы тут такие крутые, и умные, и все знаем, неужели не видно с наших слов что мы все знаем и как нужно делать?

А вы знайте? не видно! пока что 95% ваших сообщений это само хваление и наезд на человека который не разу и не утверждал что он профи
Кстати это относиться к двум ораторам выше меня, другие как правило отвечали по делу и с примерами

Автор: SneG0K 6.9.2010, 19:55
Вам уже давно ответили, что вы пишете кривой велосипед и предложили посмотреть уже готовые классы, а вы все продолжаете утверждать, что "длиннее" у вас, даже не глянув на другие реализации.

Добавлено через 1 минуту и 49 секунд
Окей, даже если "два оратора выше" не дали информативных ответов, то остальные участники дискуссии уже давно привели факты с примерами и все равно для вас этого было мало!

Автор: gta4kv 6.9.2010, 20:01
Что вы до человека докопались, он, между прочим, вам не хамил, а только отстаивал свою точку зрения.

От тебя, SneG0K, точно такого не ожидал. Вот вроде умные люди, даже слова какие умные были, а ведёте себя как детсадовцы не сильно развитые.

Автор: SneG0K 6.9.2010, 20:09
gta4kv, ты прав. Действительно что-то я разошелся. 
Muerto, извини, ты к этому еще и сам дойдешь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)