Позавчера написал:
class EndPageRndContent {
private $rnd;
private $rnd_obj;
public function __construct() {
$this->rnd = rand(1, 6);
switch ($this->rnd) {
case 1: //пользователи
$this->rnd_obj = new RndUsers(4);
break;
case 2: //посты
$this->rnd_obj = new RndPosts(2);
break;
case 3: //посткоменты
$this->rnd_obj = new RndPostComs(1);
break;
case 4: //картинки
$this->rnd_obj = new RndFotos(4);
break;
case 5: //фотокоменты
$this->rnd_obj = new RndFotoComs(1);
break;
case 6: //фотоалбомы
$this->rnd_obj = new RndAlbums(4);
break;
default: //ВСЕГДА В КЕЙСАХ ...!!!
echo 'rnd_err def exit';
$e = new Err();
$e->logerr_exit('rnd_err def exit ' . __METHOD__ . ' in ' . __FILE__ . ' on ' . __LINE__);
break;
}
}
}
Вчера переписал:
class RndContentEndPage {
private $rnd; //какой нужно выбирать
private $cou_rnd_obj; //количество в масссиве -1 (нум с нуля)
private $selected_rnd_obj; //выбран из массива
private $how_show_rnd_cont; //сколько элементов показывать
private $rnd_obj;
private $tmp_wsh;
private $rnd_ar = ['RndUsers', 'RndPosts','RndPostComs','RndFotos','RndFotoComs',
'RndAlbums','RndComPics'];
public function __construct() {
$this->cou_rnd_obj = count($this->rnd_ar) - 1;
$this->rnd = rand(0, $this->cou_rnd_obj); //нумерац с 0
$this->selected_rnd_obj = $this->rnd_ar[$this->rnd];
$this->how_show_rnd_cont = rand(1, 4);
$this->rnd_obj = new $this->selected_rnd_obj($this->how_show_rnd_cont);
}
}
Сегодня еще раз переписываю...
class RndContentEndPage {
private $rnd; //какой нужно выбирать
private $cou_rnd_obj; //количество в масссиве -1 (нум с нуля)
private $selected_rnd_obj; //выбран из массива
private $how_show_rnd_cont; //сколько элементов показывать
private $rnd_obj;
private $tmp_wsh;
private $rnd_ar = ['RndPostComs', 'RndFotoComs', 'RndPosts', 'RndUsers',
'RndAlbums', 'RndFotos', 'RndComPics'];
public function __construct() {
$this->cou_rnd_obj = count($this->rnd_ar) - 1;
$this->rnd = rand(0, $this->cou_rnd_obj); //нумерац с 0
$this->selected_rnd_obj = $this->rnd_ar[$this->rnd];
$this->set_how_show_rnd_cont();
$this->rnd_obj = new $this->selected_rnd_obj($this->how_show_rnd_cont);
}
private function set_how_show_rnd_cont() { //лучше несколько прсостых условий, чем какая-то хрень
if ($this->rnd < 2) {
$this->how_show_rnd_cont = 1;
}
if ($this->rnd == 2 ) {
$this->how_show_rnd_cont = 2;
}
if ($this->rnd > 2 ) {
$this->how_show_rnd_cont = 4;
}
}
}
Добавил я
$this->set_how_show_rnd_cont(); //в зависимости от того какой случайный контент показывать
этой строчкой устанавливается количество случайного контента для вывода
БЫЛО
$this->how_show_rnd_cont = rand(1, 4); //от 1 до 4 элементов
Если вывод 4 картинок или 4 фотоальбомов смотрится более-менее, то вывод 4 постов или 4 комментов выглядит уже не очень красиво (один коммент может быть на две(!) страницы монитора). Раньше в скобках было указано сколько нужно случайного контента выводить.
case 1: //пользователи
$this->rnd_obj = new RndUsers(4);
break;
case 2: //посты
$this->rnd_obj = new RndPosts(2);
break;
case 3: //посткоменты
$this->rnd_obj = new RndPostComs(1);
break;
case 4: //картинки
$this->rnd_obj = new RndFotos(4);
break;
case 5: //фотокоменты
$this->rnd_obj = new RndFotoComs(1);
break;
case 6: //фотоалбомы
$this->rnd_obj = new RndAlbums(4);
break;
Зачем всё это запердельн... запредельное совершенствование?
Теперь если нужно будет добавить еще какой-то случайный контент, то я вписываю класс
private $rnd_ar = ['RndPostComs', 'RndFotoComs', 'RndPosts', 'RndUsers',
'RndAlbums', 'RndFotos', 'RndComPics', 'СлучайныйНовыйКонетен'];
Ну и возможно чуток условие изменю в
set_how_show_rnd_cont() - ребята, которые в теме, поймут.
И так постоянно со всем кодом.