Swir

Рейтинг
88
Регистрация
19.11.2014
Smirnof:
Спасибо, буду исправлять.


Я правильно понял, можно использовать
$settings['zerocatename'];
вместо
$zerocatename = $settings['zerocatename']; ?

В таком случае

будет работать?

Спасибо.

Что я увидел

Грубо говоря, у вас

$a = $settings['a'];

$b = $settings['b'];

$c = $settings['c'];

Затем вы делаете

$config = array(

'a'=>$a,

'b'=>$b,

'c'=>$c,

);

В итоге мы по сути получаем $config = $settings;

Так почему сразу не использовать $settings?

Smirnof:
Спасибо.
Да, я только учусь.

Ну так, с наскоку, вашу архитектуру не понять :)

Просто несколько замечаний:

Зачем инициализировать столько новых переменных

$zerocatename = $settings['zerocatename'];

$zerocatesearch = $settings['zerocatesearch'];

$zerocatevideos = $settings['zerocatevideos'];

если сразу можно использовать элемент массива $settings['zerocatename'] там, где вы собираетесь использовать $zerocatename ну и т.д. Экономьте ресурсы.

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

$config = array(

// Your Site URL

'url' => $url,

//Slider

'zerocatename' => $zerocatename,

'zerocatesearch' => $zerocatesearch,

Ну и пытайтесь осваивать тот же mysql

Как говорится, абы желание и всё получится

kostyanet:
Swir, а, понял, по вашему коду понял - ему нужна карта, чтобы из массива брать данные по алиасу, или вроде того.

Отсюда сразу мысли пойти в этот конфиг и научить его выдавать $this->config->catvideos[$name];

Ну ТС только учится и постепено придёт к пониманию от простого к сложному. Как и мы когда-то

lutskboy:
используйте тип поля enum

И перед каждой записью в таблицу ALTER TABLE :)

kostyanet:


$func=$base_name.'_'.$event_name;
/* и вызываем ее */
$$func();

Если не угадал - расскажите на человеческом языке что означают те самые коды про ютубу.

Из примера ТС переменные переменных не подойдут, ибо всё свелось к одному методу

Smirnof:
Здорово!
Спасибо, буду пробовать. Как вы считаете, так правильнее будет?
Т.е. вместо кучи кода использовать подобный шаблон.
От этой манипуляции что-то в + изменится, скорость к примеру или уменьшится кол-во запросов (хотя у меня нет бд, на файле работает все) :)

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

Но если вдруг возникнут какие-то отдельные дополнительные условия для one, two и т.д., ну например для каждого из них изменится хост - для one https_://www.googleapisxxxx.com, для two - https_://www.bbbaxxxx.com, ну или ещё что-то, когда нельзя что-то универсилизировать, то метод обрастёт кучей if, else. Но в данном случае вряд ли, просто пример неудачный - что пришло в голову.

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

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

Smirnof:
Еще один дилетантский вопрос перед изучением Yii PHP framework.
В шаблоне у меня выводятся данные при помощи ...getonecate..., ...gettwocate... и т.д.
get*** берет данные из файла youtube class и конфига.

Мне кажется, что в youtube class можно создать одно поле
Совсем запутался, такое возможно?
Это в разы сократило бы весь код.

Надеюсь понятно написал.

Не поле (переменная), а метод (функцию) как я понимаю

Да, возможно, например


protected function getcates($id, $nom){
// Construct URL
$part = "snippet";
$this->url = "https://www.googleapis.com/youtube/v3/search?videoEmbeddable=true&key={$this->key}&part=$part&order=data&maxResults=5&q={$this->config[$nom.'catevideos']}&type=video";
// Get Data
$data = $this->http(TRUE);
foreach ($data->items as $yt) {
$html .= $this->listQueryVideo($yt);
}
return $html;
}

И заменяете вызовы getonecate..., ...gettwocate на getcates($id, 'one'), getcates($id, 'two') и т.д

Не увидел, где у вас в методе используется $id? Может он не нужен,

тогда метод protected function getcates($nom)

а вызовы getcates('one'), getcates('two')

Smirnof:
Имеются блоки вида


Как запретить отображение-вывод блока, если значение onecatename не задано?
Пробовал не работает вообще пол страницы не открывает. Менял $sk на $this не помогло
p.s. не знаю что значит $sk и $this

Спасибо!

<div class="section-box">

<?php if(isset($this->config["onecatename"]) && $this->config["onecatename"]!=''):?>

<div class="section-header">

<h2 class="section-title">

<a class="name-link" href="<?php echo $this->config["url"] ?>/search/<?php echo $this->config["onecatesearch"] ?>">

<span class="name"><?php echo $this->config["onecatename"] ?></span>

</a>

</h2>

<a class="more-link" href="<?php echo $this->config["url"] ?>/search/<?php echo $this->config["onecatesearch"] ?>"><span>More <i class="mini-arrow-right"></i></span></a>

</div>

<?php endif;?>

<div class="section-content grid-small"><div class="nag cf">

<div class="my-trailers-slider"><?php echo $this->getonecate() ?></div>

Проверяет, определена ли переменная и если да и не равна пустой строке, то выводит.

Tutor:
ну прям такое только у меня чтоль в ВМ висит?

У меня это висит уже неделю

lyuda77:
Слезно извиняйтесь. Скажите что студент. Отработать пообещайте. В офис езжайте к истцу и плачьтесь там. Возьмите с собой девушку. Оденьтесь победнее. Может простят...

Вы это кому? Гипотетическому студенту или автору темы?

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

Всего: 170