PHP.SU

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

Страниц (594): В начало « ... 9 10 11 12 [13] 14 15 16 17 ... » В конец

> Найдено сообщений: 8901
EuGen Отправлено: 09 Декабря, 2013 - 09:45:16 • Тема: ускорение запроса • Форум: Работа с СУБД

Ответов: 11
Просмотров: 1927
Разумеется, так и будет. Чем сильнее индексирована таблица, тем дольше будут происходить опрерации вставки. Следует оценить, нужны ли все индексы? Какие запросы выборки проводятся? И часто ли вообще происходят выборки? Как часто происходст вставки?

Если и выборки и вставки критичны и оба процесса происходят часто, вероятно, имеет смысл создать репликацию по типу OLAP-OLTP. Но тогда, разумеется, возникнет оверхед при репликации.
EuGen Отправлено: 06 Декабря, 2013 - 20:12:33 • Тема: Альтернатива ООП • Форум: Корзина

Ответов: 31
Просмотров: 8715
Гм, предполагаю, что с точки зрения быстродействия в общем случае в примере первого сообщения всё будет очень - печально.
Например, разыменование вложенных массивов продемонстрировано здесь, параграф "Using the =&-ref-operator" и далее. Точнее сказать нельзя - недостаточно кода. Но, уверен, после просмотра опкодов для ZVM всё встанет на свои места.

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

Такой подход - как компиляция анти-паттернов. Всё перечислить вряд ли представляется возможным, да и незачем. Возможно, автору темы следует изучить основы computer science (не знаю хорошего перевода, все не нравятся), почитать о базовых структурах данных, изучить используемые концепции, подходы. После - уже продвигаться дальше и с имеющейся базой подходить к ООП и ему подобным вещам.

Спойлер (Отобразить)
EuGen Отправлено: 05 Декабря, 2013 - 15:47:32 • Тема: Прога подсчета общего количества положительных элементов в массивах • Форум: Вопросы новичков

Ответов: 10
Просмотров: 450
PHP:
скопировать код в буфер обмена
  1. $data   = [6, -3, 0, 0.4, -4.7, 83];
  2. $result = array_reduce($data, function($x, $y)
  3. {
  4.    return $x+=$y>0;
  5. }, 0);

?
EuGen Отправлено: 05 Декабря, 2013 - 11:44:07 • Тема: timestamp выборка "именниников" • Форум: SQL и Архитектура БД

Ответов: 5
Просмотров: 40
DlTA пишет:
можно ли на основе timestamp в mysql получить сегодняшних именниников

Можно.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.   *
  3. FROM
  4.   `t`
  5. WHERE
  6.   DAY(birth_date)=DAY(CURDATE())
  7.   &&
  8.   MONTH(birth_date)=MONTH(CURDATE())

Более того, если задача такого поиска будет частой, имеет смысл хранить отдельно год, день и месяц рождения пользователя.
EuGen Отправлено: 05 Декабря, 2013 - 11:18:20 • Тема: timestamp выборка "именниников" • Форум: SQL и Архитектура БД

Ответов: 5
Просмотров: 40
DlTA пишет:
в ней хранятся а бы как

Если единого формата нет - то только через приложение. В PHP это strtotime или DateTime API. Можно написать хранимцю процедуру, но никакой разницы с приложением по сути не будет (за исключением того, что придётся вручную описывать распознавание даты)

Если же какой-либо единый формат всё же есть (пусть и не корректный с точки зрения типов хранения даты) - то STR_TO_DATE
EuGen Отправлено: 05 Декабря, 2013 - 09:41:42 • Тема: ip2long криво работает... • Форум: Вопросы новичков

Ответов: 2
Просмотров: 278
Используйте:
EuGen Отправлено: 05 Декабря, 2013 - 09:15:18 • Тема: Псевдоним подзапроса... • Форум: SQL и Архитектура БД

Ответов: 2
Просмотров: 26
В WHERE никак, альясы недоступны. Либо использовать HAVING, либо переписать запрос, используя JOIN
EuGen Отправлено: 04 Декабря, 2013 - 09:28:00 • Тема: parent::parent:: метода • Форум: Объектно-ориентированное программирование

Ответов: 11
Просмотров: 3746
EuGen пишет:
рефлексия - в общем случае - единственный выход.

В случае вызова по дереву вышестоящих родительских классов - разницы не будет в силу переноса контекста объекта (о чем была дана выше ссылка). Но общий случай состоит в том, что строковое имя может указывать не на один из классов-предков.
EuGen Отправлено: 04 Декабря, 2013 - 08:57:26 • Тема: parent::parent:: метода • Форум: Объектно-ориентированное программирование

Ответов: 11
Просмотров: 3746
Мелкий пишет:
call_user_func(array($sFirstClassHasMethod, $sNeedMethod), $name, $value);

- вызов всегда в контексте класса и никогда - в контексте объекта. Это и есть причина, по которой рефлексия - в общем случае - единственный выход.
EuGen Отправлено: 04 Декабря, 2013 - 08:31:26 • Тема: parent::parent:: метода • Форум: Объектно-ориентированное программирование

Ответов: 11
Просмотров: 3746
PHP:
скопировать код в буфер обмена
  1. class Foo
  2. {
  3.    public function __set($name, $value)
  4.    {
  5.       $this->$name = 'Foo_'.$value;
  6.    }
  7. }
  8.  
  9. class Bar extends Foo
  10. {
  11.    public function __set($name, $value)
  12.    {
  13.       $this->$name = 'Bar_'.$value;
  14.    }
  15. }
  16.  
  17. class Baz extends Foo
  18. {
  19.    public function __set($name, $value)
  20.    {
  21.       $this->$name = 'Baz_'.$value;
  22.    }
  23. }
  24.  
  25. class Test extends Baz
  26. {
  27.    public function __set($name, $value)
  28.    {
  29.       $metadata = (new ReflectionClass($this))->getParentClass()->getParentClass();
  30.       return $metadata->getMethod(__FUNCTION__)->invokeArgs($this, [$name, $value]);
  31.    }
  32. }
  33.  
  34.  
  35. $obj = new Test;
  36. $obj->a = 'b';
  37. var_dump($obj->a);

?
EuGen Отправлено: 03 Декабря, 2013 - 22:29:06 • Тема: Реферер подменять реально? • Форум: Программирование на PHP

Ответов: 3
Просмотров: 279
DeepVarvar пишет:
В контексте браузера - никак.

https://addons[dot]mozilla[dot]org/en-US[dot][dot][dot]/modify-headers/
EuGen Отправлено: 03 Декабря, 2013 - 17:15:21 • Тема: Зачем нужны процедуры? • Форум: SQL и Архитектура БД

Ответов: 8
Просмотров: 53
Всё зависит от используемой СУБД и решаемых задач. Если речь о MySQL - там stored procedures плохи по самому своему устройству, почти всегда стоит делегировать это приложению. Но если речь идёт о, например, Oracle - то нередко в таких приложениях значительная часть бизнес-логики поручается СУБД и весьма успешно. Приложения не только для веб бывают.
EuGen Отправлено: 03 Декабря, 2013 - 15:08:55 • Тема: На раздумку • Форум: Объектно-ориентированное программирование

Ответов: 24
Просмотров: 3906
esterio пишет:
Хорошая реализация, только дебажить приватные методы не получиться

Не получится. Впрочем, сама идея такого отладчика - гм, странная. Всё же добавил проверку приватности.
EuGen Отправлено: 03 Декабря, 2013 - 14:32:15 • Тема: На раздумку • Форум: Объектно-ориентированное программирование

Ответов: 24
Просмотров: 3906
PHP:
скопировать код в буфер обмена
  1. interface Logger
  2. {
  3.    public function log($string, $resource=null);
  4. }
  5.  
  6. class Weird implements Logger
  7. {
  8.    private $class    = null;
  9.    private $instance = null;
  10.    public function __construct($class, $instance=null)
  11.    {
  12.       if(!class_exists($class))
  13.       {
  14.          throw new InvalidArgumentException('Could not infect class '.$class);
  15.       }
  16.       if(isset($instance) && !($instance instanceof $class))
  17.       {
  18.          throw new InvalidArgumentException('Unstuck');
  19.       }
  20.       $this->class    = $class;
  21.       $this->instance = $instance;
  22.    }
  23.  
  24.    public function log($string, $resource=null)
  25.    {
  26.       echo("I've eaten ".$string.PHP_EOL);
  27.    }
  28.  
  29.    public function __call($method, $args)
  30.    {
  31.       if(isset($this->instance) && !method_exists($this->instance, $method))
  32.       {
  33.          throw new Exception('I am a little pony');
  34.       }
  35.       $metadata = isset($this->instance)
  36.                ?(new ReflectionObject($this->instance))->getMethod($method)
  37.                :new ReflectionMethod($this->class, $method);
  38.       if($metadata->isPrivate())
  39.       {
  40.          throw new Exception("I don't trust this to you");
  41.       }
  42.       $this->log('call of '.$this->class.'::'.$method);
  43.       return call_user_func_array([isset($this->instance)
  44.                                   ?$this->instance
  45.                                   :$this->class, $method], $args);
  46.    }
  47. }
  48.  
  49. class Foo
  50. {
  51.    public function a()
  52.    {
  53.       echo uniqid(1).__FUNCTION__.PHP_EOL;
  54.    }
  55.  
  56.    public static function b()
  57.    {
  58.       echo uniqid(1).__FUNCTION__.PHP_EOL;
  59.    }
  60. }
  61.  
  62. $foo   = new Foo();
  63. $weird = new Weird('Foo', $foo);
  64. $weird->a();
  65. $weird = new Weird('Foo');
  66. $weird->b();


?
EuGen Отправлено: 28 Ноября, 2013 - 16:40:34 • Тема: array_unique • Форум: Вопросы новичков

Ответов: 5
Просмотров: 256
PHP:
скопировать код в буфер обмена
  1. $result = array_unique(file('/path/to/file.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES));

?

Страниц (594): В начало « ... 9 10 11 12 [13] 14 15 16 17 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB