Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 02.02.2018 02:43:31

Потеря в производительности при обращении к многомерным массивам

Думаю, это будет вопрос скорее по PHP, но всё же структура Laravel тоже имеет влияние. Может быть, Вы в ответе предложите один из инструментов Laravel.

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

PHP
class References {

    const 
DB_TABLES = array(

        
'pages' => array(
            
'tableName' => 'pages',
            
'fieldNames' => array(
                
'id' => 'id',
                
'pagename' => 'name',
                
'title' => 'title',
                
'metadesc' => 'metadesc',
                
'keywords' => 'keywords'
           
)
       );
}

Обращение к этому массиву длиннее, чем прямое указание строкового значения, зато легко переименовать поле без внедрения в логику:

PHP
use App\Extenders\References as REF;

private function 
getTopPageHtmlHeadData(){

   return 
DB::table(REF::DB_TABLES['pages']['tableName'])
     -> 
where(REF::DB_TABLES['pages']['fieldNames']['pagename'], REF::OPEN_PAGE_NAMES_IN_DB['top'])
     -> 
first();
}

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

Изменено Gleb2708 (02.02.2018 02:44:58)

Не в сети

#2 02.02.2018 10:50:04

Re: Потеря в производительности при обращении к многомерным массивам

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

Пока массив маленький - никак не скажется.

Думаю идеальный для твоего желания паттерн - Presenter.
https://habrahabr.ru/post/309942/ (мне статья не очень понравилась)

Если есть платный аккаунт на ларакасте - можешь там ознакомиться с его использованием.

Изменено covobo (02.02.2018 10:50:39)

Не в сети

#3 02.02.2018 21:56:43

Re: Потеря в производительности при обращении к многомерным массивам

Использование многомерных массивов абсолютно никак не отражается на производительности. Доступ в массивах даже с сотнями-тысячами элементов происходит моментально (в большинстве случаев), т.к. внутри используется хэш-таблица.

В PHP классы, по сути, это те же массивы с тем же временем доступа, но никого же не смущает использование $obj->foo->bar->baz, при том, что некоторые классы (особенно старые в духе PHP 4) имеют по сотне свойств - а это, считай, тот же многомерный массив.

Не в сети

Подвал раздела