Как запретить вывод блока если он пуст

S
На сайте с 13.11.2012
Offline
72
#11

Здорово!

Спасибо, буду пробовать. Как вы считаете, так правильнее будет?

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

От этой манипуляции что-то в + изменится, скорость к примеру или уменьшится кол-во запросов (хотя у меня нет бд, на файле работает все)

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

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

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

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

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

K
На сайте с 03.06.2015
Offline
45
#13

Процентов 99 программистов задающих вопрос в РФ используют коды и ждут магических ответов способных заставить работать эти же самые коды. Задать человеческий вопрос, ну типа - хочу чтобы когда тут нажимали стало красным, а когда отпускали стало зеленым - органически невозможно. Любой кто захочет отвечать должен декодировать процитированные коды, дешифровать их до смысла человеческого вопроса про красным и зеленым.

Я не смог дешифровать, могу только судить по шаблону кодов, который намекает на кложи или на переменные переменных.

Например есть базовая функция getcat() и возможно пригодятся ее расширения вроде getcat_one() getcat_two() getcat_three() и тд. Использование расширение диктует какое-то событие или условие, которое мы можем назвать вот так one, two, three. Становится очевидным что если приделать название базовой функции к названию опции, то мы получаем название нужной нам функции, например

$func=$base_name.'_'.$event_name;

/* и вызываем ее */

$$func();

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

MYSQL PHP JS HTML CSS SEO TXT США СССР
S
На сайте с 19.11.2014
Offline
88
#14
kostyanet:


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

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

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

K
На сайте с 03.06.2015
Offline
45
#15

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

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

S
На сайте с 19.11.2014
Offline
88
#16
kostyanet:
Swir, а, понял, по вашему коду понял - ему нужна карта, чтобы из массива брать данные по алиасу, или вроде того.

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

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

S
На сайте с 13.11.2012
Offline
72
#17

Спасибо.

Да, я только учусь.

Попробую описать свою систему.

Базы данных нет - принципиально.

Все данные сохраняю в settings.txt в закодированном виде.

Имеется админка со своим конфигом setup/config.php

Сама "система управления" имеет свой конфиг includes/Config.php

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

Изначально система была без админки и вся очень кривая (даже я сообразил).

Конфиг панели управления setup/config.php выглядит так

<?php

if (file_exists($filename)) {
$infotxt = file_get_contents($filename);
$settings = unserialize(base64_decode($infotxt));
$url = $settings['url'];
..........
ЕЩЕ КОД
..........
$zerocatename = $settings['zerocatename'];
$zerocatesearch = $settings['zerocatesearch'];
$zerocatevideos = $settings['zerocatevideos'];
$zeronumber = $settings['zeronumber'];
$zerosortingresults = $settings['zerosortingresults'];
$onecatename = $settings['onecatename'];
$onecatesearch = $settings['onecatesearch'];
$onecatevideos = $settings['onecatevideos'];
$onenumber = $settings['onenumber'];
$onesortingresults = $settings['onesortingresults'];
..........
ЕЩЕ КОД
..........
$admin_username = $settings['admin_username'];
$admin_password = $settings['admin_password'];

} else {
echo "The file configuration file is missing. Please run the setup again";
}

?>

Так выглядит конфиг самой "cms"

<?php
$filename="setup/settings.txt";
include ("setup/config.php");



$config = array(

// Your Site URL
"url" => "$url",

..............
ЕЩЕ КОД
..............

//Slider
"zerocatename" => "$zerocatename",
"zerocatesearch" => "$zerocatesearch",
"zerocatevideos" => "$zerocatevideos",
"zeronumber" => "$zeronumber",
"zerosortingresults" => "$zerosortingresults",

//Category Home Page Video
"onecatename" => "$onecatename",
"onecatesearch" => "$onecatesearch",
"onecatevideos" => "$onecatevideos",
"onenumber" => "$onenumber",

..............
ЕЩЕ КОД
..............

// Server's timezone for more accurate data
"timezone" => "Russia/Moscow",

// Cache Data - If you notice anomalies, disable this. You should enable this when you get high hits
"cache" => TRUE,

// Enable mode_rewrite? e.g. user/login instead of index.php?a=user/login
"mod_rewrite" => TRUE,

// Enable Compression? Makes your website faster
"gzip" => TRUE,

);

// Include core.php
include ('Core.php');

?>

1. Подключается файл с закодированными, ранее сохраненными данными $filename="setup/settings.txt";

2. Подключается конфиг include ("setup/config.php");

ВОТ И ПОЛУЧИЛОСЬ НЕЧТО. :)

То есть, конфиг самой "cms" вытягивает данные из файла setup/settings.txt декодируя их при помощи setup/config.php

Далее, includes/Youtube.class.php дергает все из includes/Config.php

вставляет полученные данные в

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

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

я еще не переделал в предложенный Swir код но буду переделывать.

вариант ниже я не понял (пока)

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

После всех этих манипуляций, полученный результат уходит в шаблон где выводится при помощи данных полученных из includes/Config.php

Получается, чтобы сформировать страницу с результатом, файл includes/Config.php задействуется как минимум два раза, сначала отправляет поисковый запрос с помощью Youtube.class.php, потом выводит полученный результат в шаблон при помощи самого себя includes/Config.php ...вроде так... :)

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

Но что и как делать не понимаю, вот и взялся пока за редактирование Youtube.class.php

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

Спасибо, действительно не нужен

S
На сайте с 19.11.2014
Offline
88
#18
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

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

S
На сайте с 13.11.2012
Offline
72
#19

Спасибо, буду исправлять.

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

$zerocatename = $settings['zerocatename'];
$zerocatesearch = $settings['zerocatesearch'];
$zerocatevideos = $settings['zerocatevideos'];

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

Я правильно понял, можно использовать

$settings['zerocatename'];

вместо

$zerocatename = $settings['zerocatename']; ?

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

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;
}

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

Спасибо.

S
На сайте с 19.11.2014
Offline
88
#20
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?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий