PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (32): В начало « ... 22 23 24 25 [26] 27 28 29 30 ... » В конец

> Найдено сообщений: 468
tato Отправлено: 24 Апреля, 2012 - 12:04:23 • Тема: не понимаю смисл слова, котори стоит перед аргимента в методе • Форум: Объектно-ориентированное программирование

Ответов: 24
Просмотров: 4529


А вот кстати простейшие указать нельзя, точнее указать можно, но будет ошибка:
PHP:
скопировать код в буфер обмена
  1.  
  2. class Foo {
  3.  
  4.   function bar(int $value)
  5.   {
  6.   }
  7. }
  8.  
  9. $test = new Foo();
  10. $test->bar( 123 ); // ошибка [ must be instance of int, int given ]
  11.  

tato Отправлено: 24 Апреля, 2012 - 11:55:54 • Тема: Изменение кодировки при использовании сторонних библиотек • Форум: Вопросы новичков

Ответов: 10
Просмотров: 347
Viper, не надо читать между строк.

А если Мы изначально не знаем какие будут кодировки, будет ли их много или вообще одна, то проект плохо продуман
tato Отправлено: 23 Апреля, 2012 - 11:37:57 • Тема: Изменение кодировки при использовании сторонних библиотек • Форум: Вопросы новичков

Ответов: 10
Просмотров: 347
Viper пишет:
Велосипед однако.

Теперь представим, что чаще переводят из cp1251 в utf-8 и обратно.
Если в проекте заведомо других кодировок не предусмотренно, то данное решение лучше.
А если Мы изначально не знаем какие будут кодировки, будет ли их много или вообще одна, то проект плохо продуман и тогда не стоит заморачиваться оптимизацией в принципе, да и в принципе тогда не нужно заморачиваться, авось попрет.
Я вот лично не понимаю, зачем по мухам из пушки палить.
tato Отправлено: 23 Апреля, 2012 - 09:22:19 • Тема: Задание свойств объекта и их вывод • Форум: Хранение данных, их вывод и обработка

Ответов: 4
Просмотров: 2155
Примерно так:

PHP:
скопировать код в буфер обмена
  1.  
  2. $db = new PDO( "mysql:host=$host;dbname=$dbname", $user, $password );
  3.  
  4. $stmt = $db->prepare( "SELECT weight, color, form FROM tbl_name" );
  5.  
  6. if( !stmt->execute() )
  7. {
  8.     print_r( $stmt->errorInfo() );
  9. }
  10.  
  11. $result = $stmt->fetchAll( PDO::FETCH_ASSOC );
  12.  
  13. foreach( $result as $item )
  14. {
  15.      printf( "weight:%s, color:%s, form:%s", $item['weight'], $item['color'], $item['form'] );
  16. }
  17.  
tato Отправлено: 22 Апреля, 2012 - 20:12:39 • Тема: чо не так • Форум: Вопросы новичков

Ответов: 7
Просмотров: 245
fopen и fcolse не нужны просто unlink().
tato Отправлено: 22 Апреля, 2012 - 17:03:30 • Тема: Изменение кодировки при использовании сторонних библиотек • Форум: Вопросы новичков

Ответов: 10
Просмотров: 347
Вообщем в свое время тоже интересовал этот вопрос, после долгих поисков и полотен текста нашел такое решение, фишка в том, что данная функция работает в разы быстрее iconv:

PHP:
скопировать код в буфер обмена
  1.  
  2. function cp2utf (&$str, $revers=false) {
  3.     $cp = array (
  4.         chr(208), chr(192), chr(193), chr(194),
  5.         chr(195), chr(196), chr(197), chr(168),
  6.         chr(198), chr(199), chr(200), chr(201),
  7.         chr(202), chr(203), chr(204), chr(205),
  8.         chr(206), chr(207), chr(209), chr(210),
  9.         chr(211), chr(212), chr(213), chr(214),
  10.         chr(215), chr(216), chr(217), chr(218),
  11.         chr(219), chr(220), chr(221), chr(222),
  12.         chr(223), chr(224), chr(225), chr(226),
  13.         chr(227), chr(228), chr(229), chr(184),
  14.         chr(230), chr(231), chr(232), chr(233),
  15.         chr(234), chr(235), chr(236), chr(237),
  16.         chr(238), chr(239), chr(240), chr(241),
  17.         chr(242), chr(243), chr(244), chr(245),
  18.         chr(246), chr(247), chr(248), chr(249),
  19.         chr(250), chr(251), chr(252), chr(253),
  20.         chr(254), chr(255)
  21.     );
  22.  
  23.     $utf_8 = array (
  24.         chr(208).chr(160), chr(208).chr(144), chr(208).chr(145),
  25.         chr(208).chr(146), chr(208).chr(147), chr(208).chr(148),
  26.         chr(208).chr(149), chr(208).chr(129), chr(208).chr(150),
  27.         chr(208).chr(151), chr(208).chr(152), chr(208).chr(153),
  28.         chr(208).chr(154), chr(208).chr(155), chr(208).chr(156),
  29.         chr(208).chr(157), chr(208).chr(158), chr(208).chr(159),
  30.         chr(208).chr(161), chr(208).chr(162), chr(208).chr(163),
  31.         chr(208).chr(164), chr(208).chr(165), chr(208).chr(166),
  32.         chr(208).chr(167), chr(208).chr(168), chr(208).chr(169),
  33.         chr(208).chr(170), chr(208).chr(171), chr(208).chr(172),
  34.         chr(208).chr(173), chr(208).chr(174), chr(208).chr(175),
  35.         chr(208).chr(176), chr(208).chr(177), chr(208).chr(178),
  36.         chr(208).chr(179), chr(208).chr(180), chr(208).chr(181),
  37.         chr(209).chr(145), chr(208).chr(182), chr(208).chr(183),
  38.         chr(208).chr(184), chr(208).chr(185), chr(208).chr(186),
  39.         chr(208).chr(187), chr(208).chr(188), chr(208).chr(189),
  40.         chr(208).chr(190), chr(208).chr(191), chr(209).chr(128),
  41.         chr(209).chr(129), chr(209).chr(130), chr(209).chr(131),
  42.         chr(209).chr(132), chr(209).chr(133), chr(209).chr(134),
  43.         chr(209).chr(135), chr(209).chr(136), chr(209).chr(137),
  44.         chr(209).chr(138), chr(209).chr(139), chr(209).chr(140),
  45.         chr(209).chr(141), chr(209).chr(142), chr(209).chr(143)
  46.     );
  47.     if($revers){
  48.         $str = str_replace($utf_8,$cp,$str);
  49.     }else{
  50.         $str = str_replace($cp,$utf_8,$str);
  51.     }
  52. }
  53.  
tato Отправлено: 22 Апреля, 2012 - 16:54:59 • Тема: Авторизация. Безопасность. • Форум: Работа с СУБД

Ответов: 6
Просмотров: 1576
Через .htaccess например приявязать ip админа, что бы с других нельзя было войти в админ зону, но это буде эффективно если ip статичный.
Использовать для хранения не БД а в .htpasswd http://www.php.su/articles/?cat=...che&page=010
tato Отправлено: 22 Апреля, 2012 - 10:43:09 • Тема: Правильно ли что объекту класса можно добавлять свойства неопределенные в классе? • Форум: Объектно-ориентированное программирование

Ответов: 20
Просмотров: 3496
Вопрос автора "Правильно ли, что можно присвоить значение не существующему свойству экземпляра."
Ответ да, но можно сделать заглушку переопредилив методы __set и __get.
т.к. Переопределять необходимо для каждого пользовательского объекта, ( о чудо ООП в действии! ) используем наследование, переопределяем вышеупомянутые методы в некой абстракции и из нее рашрияем все остальное. Если возможности расширить нет, например Класс уже рашрипяет, что-то реализуем интерфейс, что бы не забыть реализовать методы.
Скажете это какой-то левый геммор! Согласен на 100500+, достаточно просто быть внимательным. Но возможность существует и была дана автору, как он будет делать его выбор.

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. class Test {
  4.  
  5.     // заглушка
  6.     function __set( $k, $v )
  7.     {
  8.         return false;
  9.     }
  10.  
  11.     // заглушка
  12.     function __get( $k )
  13.     {
  14.         return false;
  15.     }    
  16. }
  17.  
  18. class Test2 {
  19.  
  20. }
  21.  
  22. $test = new Test();
  23. $test->foo = "bar";
  24. echo $test->foo; // ничего не выведет
  25.  
  26. $test2 = new Test2();
  27. $test2->foo = "bar";
  28. echo $test2->foo; // выведет bar
  29.  
  30.  
tato Отправлено: 22 Апреля, 2012 - 08:42:59 • Тема: Правильно ли что объекту класса можно добавлять свойства неопределенные в классе? • Форум: Объектно-ориентированное программирование

Ответов: 20
Просмотров: 3496
caballero, интерфейс:
Цитата:
В общем это способ не забыть


Наследование:
Если написать общий класс с методом __set() и расширять его, то не придется добавлять его в потомках, т.к. он уже определен в родителе. Думаю автор это имел ввиду.
tato Отправлено: 21 Апреля, 2012 - 19:54:18 • Тема: Изображение в mysql • Форум: Графика в PHP

Ответов: 4
Просмотров: 3049
копипаст не помню откуда.
tato Отправлено: 21 Апреля, 2012 - 19:53:45 • Тема: Изображение в mysql • Форум: Графика в PHP

Ответов: 4
Просмотров: 3049
Размещение бинарных файлов (картинок) в базе данных
Для помещеня бинарного файла в базу данных, надо...

1. создайте таблицу с полем BLOB

2. прочитайте данные, которые надо поместить в базу данных, в переменную $upload. Если это файл (картинка) на диске, то сделайте это так:
<?
unset($upload); // все переменные перед первым использованием надо уничтожать
$f=fopen("image.jpg","rb"); // имя файла или картинки -- открыли файл на чтение
while(!feof($f)) $upload.=fread($f,65000); // считали файл в переменную
fclose($f); // закрыли файл, можно опустить
...


3. защитите переменную от опасных символов ("прослешьте переменную"):

...
$upload=addslashes($upload);
...


4. загрузите переменную в базу данных:

...
mysql_query("INSERT INTO <таблица> (<поле>) VALUES ('$upload')");
?>

"Таблица" - имя таблицы, "поле" - название колонки в таблице типа BLOB, что были созданы при выполнении пункта 1. Разумеется, чтобы выполнить HTML запрос надо предварительно установить соединение с базой данных.

Для взятия бинарного файла из базы данных в браузере, надо...

Вы будете смеяться, но ничего особого не надо. Просто прочитайте ее как простую переемнную из базы данных. В переменную на языке ПХП можно упихать все, что надо. Правда, есть лимит памяти (будьте внимательны с переменными от 2 МБ), о котором надо помнить. Разумеется, лимит увеличить, но это тема не данной статьи.

Чтобы показать картинку их базы данных, надо...

Освоить пример 1 этой статьи, а вместо чтения из файла, взять переменную из базы данных, примерно вот так:
<?
... // подключение к Б.Д.
$res=mysql_query("SELECT <поле> FROM <таблица> WHERE <условия>")
or die("SQL ERROR in line ".__LINE__.", function mysql_query");
$image=mysql_result($res, <строка>, <колонка>); // берем переменную из б.д.
header("Content-type: image/gif");
echo $image;
?>
tato Отправлено: 21 Апреля, 2012 - 19:47:30 • Тема: Правильно ли что объекту класса можно добавлять свойства неопределенные в классе? • Форум: Объектно-ориентированное программирование

Ответов: 20
Просмотров: 3496
Если Вам это чем-то поможет, то можете использовать интерфейс:

PHP:
скопировать код в буфер обмена
  1.  
  2. interface ITest {
  3.    
  4.     function __set( $key, $value );
  5. }
  6.  
  7. class Test implements ITest {
  8.    
  9.     // php выдаст ошибку если не реализовать метод __set()
  10.     function __set( $key, $value )
  11.     {
  12.          // заглушка
  13.         return false;
  14.     }
  15. }
  16.  
  17.  // реализация интерфейса не требуется т.к. класс предок уже реализовал
  18. class Test2 extends Test {
  19.    
  20. }
  21.  
  22. $test = new Test2();
  23. $test->test = 123;
  24. echo $test->test;
  25.  


В общем это способ не забыть, так же удобно если например слас уже, что-то расширяет.
tato Отправлено: 21 Апреля, 2012 - 16:42:09 • Тема: GET и URL: очистить URL старых get переменных • Форум: HTTP и PHP

Ответов: 10
Просмотров: 5575
Я за Вас плюсанул ему, хорошему человеку никогда не жалко (=
tato Отправлено: 21 Апреля, 2012 - 13:01:30 • Тема: проблемы с exit • Форум: Вопросы новичков

Ответов: 6
Просмотров: 222
PHP:
скопировать код в буфер обмена
  1.  
  2. require_once( "header.php" );
  3.  
  4. if( !empty( $_POST ) )
  5. {
  6.     // если постим что-нибудь
  7. }
  8. else
  9. {
  10.     if( !empty( $_GET ) )
  11.     {
  12.          // если гетим что-нибудь
  13.     }
  14.     else
  15.     {
  16.         // если ничего не куда не постим и не гетим
  17.     }
  18. }
  19.  
  20. require_once( "footer.php" );
  21.  


один хедер, один футер, никаких выходов.

PHP:
скопировать код в буфер обмена
  1.  
  2. try
  3. {
  4.     // некий код
  5.    
  6.     // oops что-то не так
  7.     throw new Exception( "Что-то не так!", 0 );
  8.  
  9.     // далее код не выполняется
  10. }
  11. catch( Exception $e )
  12. {
  13.     // НО выполняется код здесь
  14. }
  15.  
  16.   // И здесь тоже выполнится при любом раскладе
  17.  
  18.  

(Добавление)
Более приближенный к боевым действиям вариант:

шаблон
PHP:
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE HTML>
  3. <HTML>
  4.     <HEAD>
  5.         <?PHP $model->head(); ?>
  6.     </HEAD>
  7.  
  8.     <BODY>
  9.         <?PHP $model->menu(); ?>
  10.         <?PHP $model->content(); ?>
  11.         <?PHP $model->footer(); ?>
  12.     </BODY>
  13. </HTML>
  14.  
tato Отправлено: 21 Апреля, 2012 - 12:49:50 • Тема: проблемы с exit • Форум: Вопросы новичков

Ответов: 6
Просмотров: 222
Вообще в таком формате Вам придется добавлять футер перед каждым выходом, это крайне не удобно.

Страниц (32): В начало « ... 22 23 24 25 [26] 27 28 29 30 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB