Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (3) [1] 2 3  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Класс с наполнением и выводом
maximka787  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1258
Пользователь №: 2705
На форуме: 9 лет, 7 месяцев, 16 дней
Карма: 1




Ребят, я изучаю ооп и у меня вопрос, правильно ли я создал класс.
Хочу проверить грамматику. Никаких глобальных целей я не преследую, поэтому речь не о фрейм ворках и MVC.
Мне нужно создать класс который подключает и выводит скрипты. Подключение скриптов идет на протяжении всего сайта (в разных частях, функциях, блоках), а вывод уже при генерации контента. Верно ли я понял принцип работы своего ПРОСТОГО класса.
class Scr
{
private $scripts = array();

public function addScript($new = '')
{
if(!empty($new))
{
$this->scripts[] = $new;
}
}


public function show()
{
$out = '';

if(count($this->scripts) > 0)
{
foreach($this->scripts as $v)
{
$out .= '<script type="text/javascript" src="'.$v.'"></script>';
}
}


return $out;
}

}



$js = new Scr();

$js->addScript('/scripts/jquery.js');
$js->addScript('/scripts/init.js');
$js->addScript('/moduls/contact_form/contact_form.js');

echo $js->show();


--------------------
..Работает - не трогай!
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26258
Пользователь №: 21350
На форуме: 7 лет, 10 дней
Карма: 729

Не курю:
1 год, 5 месяцев, 26 дней


1. валидность урл скриптов не проверяется, ну или фактическое их наличие
2. public function addScript($new = '') - if(!empty($new)) зачем дефолт? - 2 пробела проскочит
3. if(count($this->scripts) > 0) is_array() в помощь
4. $out .= '<script type="text/javascript" src="'.$v.'"></script>'; - в HTML всё в строку будет \r\n

еслиб ты расширил для CSS ещё + дефолтовые пути до онлайн библий типа JQUery и т.д.

а так функции с 1 аргументом (массив списка файлов) достаточно

не понял смысл класса, руками же можно постить

вот если проверять подключаемые скрипты - чтоб выполнение скриптов по левым урл не проходило - тогда есть смысл


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

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15899
Пользователь №: 6543
На форуме: 8 лет, 5 месяцев, 21 день
Карма: 300

Трезвый :
6 лет, 2 месяца, 30 дней


Цитата (maximka787 @ 7.04.2016 - 08:30)
Подключение скриптов идет на протяжении всего сайта (в разных частях, функциях, блоках)
Не сработает. Тут статика нужна или реестр.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26258
Пользователь №: 21350
На форуме: 7 лет, 10 дней
Карма: 729

Не курю:
1 год, 5 месяцев, 26 дней


class JS
{
static public function add($pathtoscript)
{
return '<script type="text/javascript" src="'.$pathtoscript.'"></script>';
}
}



echo JS::add('path/to/script/file');


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

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15899
Пользователь №: 6543
На форуме: 8 лет, 5 месяцев, 21 день
Карма: 300

Трезвый :
6 лет, 2 месяца, 30 дней


А остальные?


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26258
Пользователь №: 21350
На форуме: 7 лет, 10 дней
Карма: 729

Не курю:
1 год, 5 месяцев, 26 дней


$js = array(
'/scripts/jquery.js',
'/scripts/init.js',
'/moduls/contact_form/contact_form.js'
);

foreach($js as $file){
echo JS::add($file).PHP_EOL;
}


:D


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

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maximka787  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1258
Пользователь №: 2705
На форуме: 9 лет, 7 месяцев, 16 дней
Карма: 1




Спасибо парни за подсказки... но
Печаль.....
Только чуть допилил скрипт и проверил. Оказалось не работает. Смысл моего мини класса поломался((((

class Scr
{

private $scripts = array();


public function addScript($new = '')
{
//вдруг кодер не в курсе, что нужен параметр :)
if(!empty($new) && file_exists($_SERVER['DOCUMENT_ROOT'].$new))
{
$path = pathinfo($new);
if($path['extension'] == 'js')
{
$this->scripts[] = $new;
}
}
}



public function show()
{
$out = '';

if(count($this->scripts) > 0)
{
foreach($this->scripts as $v)
{
$out .= '<script type="text/javascript" src="'.$v.'"></script>';
}
}


return $out;
}

}



$js = new Scr();

$js->addScript('/scripts/jquery.js');
$js->addScript('/scripts/init.js');


function contact_form()
{
$js->addScript('/moduls/contact_form/contact_form.js');
}

echo $js->show();

Третий не видит.
Я то как хотел, чтоб потом, в других функциях (которые отдельно в файлах разбросаны) не думал, как же подключить новый JS файл определенного модуля и не лез в основной main.php, добавляя в массив. Я же ООП изучаю и следовательно хочу с ним поработать. А в функции не видно объект(((((((((


--------------------
..Работает - не трогай!
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26258
Пользователь №: 21350
На форуме: 7 лет, 10 дней
Карма: 729

Не курю:
1 год, 5 месяцев, 26 дней


Цитата
то как хотел, чтоб потом, в других функциях (которые отдельно в файлах разбросаны)

ну вот мой вариант то как раз для этой картины

1 метод
много файлов - куда внедрять
в каждом файле прописан свой массив скриптов и 1 вызов в цикле.

Цитата
А в функции не видно объект(((((((((

канешь нет) а зачем вообще функция ?

ты же можешь класс наследник написать, даже классы.


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

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maximka787  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1258
Пользователь №: 2705
На форуме: 9 лет, 7 месяцев, 16 дней
Карма: 1




Игорь_Vasinsky
Fatal error: Using $this when not in object context


--------------------
..Работает - не трогай!
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26258
Пользователь №: 21350
На форуме: 7 лет, 10 дней
Карма: 729

Не курю:
1 год, 5 месяцев, 26 дней


maximka787
в моём примере нет объекта) т.е. $this, там статичный класс же. всё на лету без создания объекта.


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

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
[x] Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15899
Пользователь №: 6543
На форуме: 8 лет, 5 месяцев, 21 день
Карма: 300

Трезвый :
6 лет, 2 месяца, 30 дней


class Scr
{

protected static $scripts = array();


public static function addScript($new = '')
{
//вдруг кодер не в курсе, что нужен параметр :)
if(!empty($new) && file_exists($_SERVER['DOCUMENT_ROOT'].$new))
{
$path = pathinfo($new);
if($path['extension'] == 'js')
{
self::$scripts[] = $new;
}
}
}



public static function show()
{
$out = '';

if(count(self::$scripts) > 0)
{
foreach(self::$scripts as $v)
{
$out .= '<script type="text/javascript" src="'.$v.'"></script>';
}
}


return $out;
}

}


Scr::addScript('/scripts/jquery.js');
Scr::addScript('/scripts/init.js');


function contact_form()
{
Scr::addScript('/moduls/contact_form/contact_form.js');
}

echo Scr::show();


Если нужно пафосное ООП, почитай про реестр.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maximka787  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1258
Пользователь №: 2705
На форуме: 9 лет, 7 месяцев, 16 дней
Карма: 1




Спасибо парни за помощь. Я понял, что походу ухожу от ООП снова к процедурке, только в ином формате. Говорят, что статичные методы не айс. Этот знак :: не особо пользуется популярностью. Видать видимо twin я понял что это не классика?

У меня тогда сразу вопрос еще один. Получается нельзя по НОРМАЛЬНОМУ совмещать ООП и функции в одном проекте и тут либо сразу переписывать двиг полностью, либо оставлять функции. но постепенно заменить сущность на объекты невозможно. Да?


--------------------
..Работает - не трогай!
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15899
Пользователь №: 6543
На форуме: 8 лет, 5 месяцев, 21 день
Карма: 300

Трезвый :
6 лет, 2 месяца, 30 дней


Цитата (maximka787 @ 7.04.2016 - 10:31)
Говорят, что статичные методы не айс. Этот знак :: не особо пользуется популярностью.

Говорят, что кур доят. Не верь никому.
Цитата (maximka787 @ 7.04.2016 - 10:31)
Получается нельзя по НОРМАЛЬНОМУ совмещать ООП и функции в одном проекте

Легко.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maximka787  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1258
Пользователь №: 2705
На форуме: 9 лет, 7 месяцев, 16 дней
Карма: 1




twin
Читаю статью. По моему это то же само, что и мне нужно)))

В общем спасибо вам Игорь_Vasinsky и twin за направление. Буду развиваться.


--------------------
..Работает - не трогай!
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1860
Пользователь №: 38654
На форуме: 3 года, 2 месяца, 21 день
Карма: 41




Сам класс

class Asset
{

protected $scripts = array();

public function addScript($name, $script)
{
$this->scripts[$name] = $script;
}

public function getScripts()
{
return $this->scripts;
}

public function getVersion()
{
return $fff;// получение метки, которая обновляется в случае обновления js файлов;
}

}


использование

<?php foreach ($assets->getScripts() as $script) :?>
<script
type="text/javascript" src="<?php echo $script;?>?t=<?php echo $assets->getVersion();?>"></script>';
<?php endforeach; ?>


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


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (3) [1] 2 3  Ответ в темуСоздание новой темыСоздание опроса