Swir

Рейтинг
95
Регистрация
19.11.2014
Smirnof:
Здесь <?php echo $this->getcates('one') ?>
config воткнуть не нужно? Что-то не хочет выводить, хотя и ошибок не показывает, перепроверю, возможно не все изменил.

Да нет, не нужно

В методе перед

foreach ($data->items as $yt) {

$html .= $this->listQueryVideo($yt);

}

пропишите

$html = '';

тоесть получится


$html = '';
foreach ($data->items as $yt) {
$html .= $this->listQueryVideo($yt);
}

И пробуйте, проверяйте.

А у вас эти методы до всех изменений работали?

Smirnof:
Еще путаюсь из-за того, что в вашем образце
protected function getcates($nom){
а в моем
protected function getONEcate{

Изменить на protected function get($nom).cate{?

Нет, я привёл пример из другой оперы )))

оставляете protected function getcates($nom)

а в шаблоне меняете


$this->getonecate() на $this->getcates('one')
$this->gettwocate() на $this->getcates('two')
...................................
$this->getmillioncate() на $this->getcates('million')
Smirnof:
Swir, {$this->config[$nom.'catevideos']} с этим ничего делать не нужно, оно само вставит то, что нужно основываясь на protected function getcates($nom){
Так да?
Спасибо.

Так точно.

Smirnof:
:) Хорошо, это я понял.

По другому задам вопрос, как мне вызвать getcates('one'), getcates('two') и т.д.

Наверное это в шаблоне менять нужно, верно?

Вы писали в прошлых постах


В шаблоне у меня выводятся данные при помощи ...getonecate..., ...gettwocate

Ну вот меняете, где у вас там вызовы,

getonecate() на getcates('one')

gettwocate() на getcates('two')

...................................

getmillioncate() на getcates('million')

---------- Добавлено 30.07.2015 в 01:02 ----------

Smirnof:

))) так не получилось <?php echo $this->get('one')cate() ?>

))) <?php echo $this->getcates('one') ?>

Хотя и такое не лишено смысла, если добавить хотябы точку

<?php echo $this->get('one').cate() ?>, но это так, к примеру

Smirnof:
Хорошо.
Я имел ввиду, что не могу понять, как скрипт узнает, что делать с {$this->config[$nom.'catevideos']}
Ведь если я удалю все и оставлю только

вряд ли все заработает, видимо что-то нужно изменить.
Т.е. как скрипт узнает что вставить в $nom.' и то, что это значение может быть разным, запутался :(

Если вы вызываете getcates('one'), вы передаёте параметр $nom, равный 'one'

Если вы вызываете getcates('two'), вы передаёте параметр $nom, равный 'two' и т.д.

В результате в методе $this->config[$nom.'catevideos'] превращается в

$this->config['onecatevideos'] или $this->config['twocatevideos'] и т.д.

Вот простой примерчик, как это работает


//Три вызова функции write

write('one');
write('two');
write('thre');

function write($nom){

echo $nom.'BBBBBBB';

}

Выведет

'oneBBBBBBB';// для write('one');
'twoBBBBBBB';// для write('two');
'threeBBBBBBB';// для write('thre');

Тоесть, всё делает одна функция (write), а не три (writeone, writetwo, writethree);

Smirnof:
{$this->key} давал ошибку, я заменил на {$this->config["key"]}, верно?

Не могу сообразить где и как изменить это {$this->config[$nom.'catevideos']}

$this->config[$nom.'catevideos'] не надо менять, а вот

$this->url ругаться не будет, поэтому смотрите, получаете вы то, что нужно или нет и если нет, то возможно

придётся заменить $this->url на $this->config["url"];

Просто я не знаю, как вы определяли поля класса и какие там взимосвязи и зависимости

Smirnof:
Спасибо! Теперь начну разбирать то с чего все и началось, буду сокращать youtube class, буду пробовать )
И заменяете вызовы getonecate..., ...gettwocate на getcates('one'), getcates('two') и т.д

Это актуально сейчас для моего кода?

Да. Вы сведёте несколько функций к одной.

Единственное, обратите внимание в методе


protected function getcates($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;
}

на $this->url и $this->key, как себя поведут и будут ли выскакивать ошибки?

Smirnof:

Вывод в админке заработал после метода тыка, сделал так
<?php echo $config["url"] ?> это верно?
Спасибо!

p.s. вроде работает )

Да, хотел вам это и написать.

переменные вида $this->value заменить на $this->config['value'],

а вида $value на $config['value']

Ну, теперь видите, сколько лишних и ненужных переменных инициализировали


$store = array(

Ну здесь вы собираете в массив для записи в файл. тут не надо


А $_SESSION изменить, но как не знаю

Нет необходимости что-то делать с $_SESSION исходя из сделанных изменений

Smirnof:
Сделал все как вы описали, работает! :)
Единственное в вашем коде


Удалил );
Т.е. там нет $config = array(); Это верно?

Это тоже пришлось снести, выдавало ошибку.

Да, правильно

Smirnof:

Обнаружил неожиданный для меня поворот
Теперь не работает админка :(
Не входит в нее, убрал проверку логина и пароля, админка открылась с пустыми данным, все поля пусты, т.е. она не может подгрузить конфиг файл и/или данные из него.
Видимо надо было раньше об этом упомянуть :(

Смотрите, вы заменили

$settings = unserialize(base64_decode($infotxt));

на

$config = unserialize(base64_decode($infotxt));

и убрали все ненужные инициализации. У вас в коде


if ($_POST['username'] == $admin_username
&& $_POST['password'] == decryptPaswd($admin_password,getEncryptKey())){

и до того, как изменили код было


$admin_username = $settings['admin_username'];
$admin_password = $settings['admin_password'];

но сейчас эти значения хранятся в массиве $config, следовательно нужно заменить


if ($_POST['username'] == $config['admin_username']
&& $_POST['password'] == decryptPaswd($config['admin_password'],getEncryptKey())){

и тогда должно всё заработать. Так и с другими переменными, если ещё не заменили

---------- Добавлено 29.07.2015 в 19:26 ----------

kostyanet:

Короче говоря у автора темы еще нет опыта структуирования данных, обобщения по признакам, по классификации, по MVC. Без всего этого развитие ПО сайта невозможно. Лапша очень быстро сама себя ограничивает.

На лапше набираются опыта ))). Сначала функциональный подход, а потом, когда уже есть некая база, можно браться и за ООП и за MVC

kostyanet:

Да, инвариантом extract() является http://php.net/manual/en/function.compact.php

Там были ненужные инициализации переменных, а так да - удобные функции.

Smirnof:
)))
Ну то есть из settings.txt файла?

В шаблоне, вывожу название категорий

Как по мне, так вы только и понимаете меня :)

А если прописав

$config = unserialize(base64_decode($infotxt))

вместо

$settings = unserialize(base64_decode($infotxt))

и убрав то, на что я указывал

в шаблонах вместо переменных вида

$zerocatename (или $this->zerocatename)

прописать

$config['zerocatename'] (или $this->config['zerocatename']),

то должно работать

Всего: 174