Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 23 Февраль, 2012, 10:21:20

Страниц: [1]
Печать
Автор Тема: Класс ресурсов (css,images,js)  (Прочитано 161 раз)
0 Пользователей и 1 Гость смотрят эту тему.
iphine5g    ↓ 
03 Декабрь, 2011, 07:20:37
НЕ ХУЕТА! ХУЕТА!


Карма: -2
Сообщений: 224
Сила слова: -0.89

Не хочу в речную все это делать (писать пути, подключать), решил сделать так.
 
Вот мой первый класс, постигаю азы ООП, надеюсь я не безнадежен))
 
PHP

 
class ResourcesConnector
{
 
    private $abs_css_path;
    private $abs_js_path;
    private $abs_img_path;
 
    private $css_path;
 
    function setAbsPaths($abs_css_path, $abs_js_path, $abs_img_path)
    {
        $this->abs_css_path = $abs_css_path;
        $this->abs_js_path = $abs_js_path;
        $this->abs_img_path = $abs_img_path;
    }
 
    function setPaths($css_path)
    {
        $this->css_path = $css_path;
    }
 
    function CSS()
    {
 
        $open_css_folder = opendir($this->abs_css_path);
 
        while ($filename = readdir($open_css_folder)) {
            if ($filename != '.' and $filename != '..') {
                echo '<link rel="stylesheet" type="text/css" href="' . $this->css_path, $filename .'" />';
            }
 
        }
 

    }
   
    function HEAD_OPEN($title)
    {
        echo '<!DOCTYPE html>';
        echo '<html><head>';
        echo '<title>'. $title .'</title>';
    }
   
   
    function HEAD_CLOSE()
    {
        echo '</head>';
    }
   
    function BODY_OPEN()
    {
        echo '<body>';
    }
   
    function BODY_CLOSE()
    {
        echo '</body></html>';
    }
   
    function monsterStart($smartyObj, $pageTitle, $tplNmae)
    {
        $this->HEAD_OPEN($pageTitle);
        $this->CSS();
        $this->HEAD_CLOSE();
        $this->BODY_OPEN();
        $smartyObj->display($tplNmae);
        $this->BODY_CLOSE();
    }
}
 

 
 
Записан
phpdude    ↓ 
03 Декабрь, 2011, 07:26:33 , спустя 5 минут 56 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 339
Сообщений: 19800
Сила слова: 1.71

пиздец
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
iphine5g    ↓ 
03 Декабрь, 2011, 07:27:57 , спустя 1 минуту 24 секунды
НЕ ХУЕТА! ХУЕТА!


Карма: -2
Сообщений: 224
Сила слова: -0.89


пиздец
не нужно было так делать да?))
Записан
phpdude    ↓ 
03 Декабрь, 2011, 07:37:40 , спустя 9 минут 43 секунды
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 339
Сообщений: д-о-х-у-я!
Сила слова: 1.71

iphine5g, да это ваще пиздец чувак. это вообще даже не знаю как объяснить. да, не нужно было)
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
iphine5g    ↓ 
03 Декабрь, 2011, 07:50:36 , спустя 12 минут 56 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: -2
Сообщений: 224
Сила слова: -0.89

function CSS()
    {
 
        $open_css_folder = opendir($this->abs_css_path);
 
        while ($filename = readdir($open_css_folder)) {
            if ($filename != '.' and $filename != '..') {
                echo '<link rel="stylesheet" type="text/css" href="' . $this->css_path, $filename .'" />';
            }
 
        }
 
 
    }

 
можно хоть подключение стилей оставлю?))
Записан
Tekuto    ↓ 
03 Декабрь, 2011, 08:12:14 , спустя 21 минуту 38 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 0
Сообщений: 1018
Сила слова: 0

Нафига это тебе?
Спустя 4 минуты 37 секунд добавил
А как скрипт определяет, где таблица стилей лежит?
Записан

Just a man and his will to survive
master    ↓ 
03 Декабрь, 2011, 08:14:53 , спустя 2 минуты 39 секунд
НЕ ХУЕТА! ХУЕТА!

Квадратов сколько видишь ты?
Группа: Джедаи

Карма: 44
Сообщений: 1893
Сила слова: 2.32

iphine5g, все решения диктуются необходимостью. поэтому ты сначала обдумываешь как использовать и только потом придумываешь внутренний код.
 
вот как я использую свой класс.
задача: размещать css в head, а все скрипты - перед закрывающимся тегом body (как это выглядит в html можно посмотреть например здесь). при этом чтоб запрашивать скрипты и стили можно было в любом месте любого шаблона и подшаблона. также требуется автоматически удалять дубликаты скриптов и стилей (т.е. если я из двух подшаблонов запрошу jquery тег <script src="jquery.js"></script> должен быть вставлен только один раз).
 
я пишу в шаблоне:
HTML

<html>
<head>
{resources->require_css src="/css/my.css"}
{resources->require_jquery}
{resources->insert_css}
</head>
<body>
 // тут вставляем содержимое основной части, пусть это будет модуль, где вьюха берётся из подшаблона
{resources->insert_scripts}
</body>
</html>
 

в подшаблоне:
HTML

{resources->require_jquery}
<div>blablabla1</div>
{resources->require_js src="/js/my.js"}
<div>blablabla2</div>
{resources->require_css src="/css/my2.css"}
 

на выходе получаем
HTML

<html>
<head>
<link rel="stylesheet" type="text/css" src="/css/my.css" />
<link rel="stylesheet" type="text/css" src="/css/my2.css" />
</head>
<body>
<div>blablabla1</div>
<div>blablabla2</div>
<script src="/js/jquery-latest.js"></script>
<script src="/js/my.js"></script>
</body>
</html>
 

как именно это реализуется в коде - дело десятое, многие тут смогут написать реализацию этой идеи если им будет надо
Записан

iphine5g    ↓ 
03 Декабрь, 2011, 08:48:36 , спустя 33 минуты 43 секунды
НЕ ХУЕТА! ХУЕТА!


Карма: -2
Сообщений: 224
Сила слова: -0.89

setAbsPaths
setAbsPaths()
Записан
iphine5g    ↓ 
03 Декабрь, 2011, 08:59:17 , спустя 10 минут 41 секунду
НЕ ХУЕТА! ХУЕТА!


Карма: -2
Сообщений: 224
Сила слова: -0.89


iphine5g, все решения диктуются необходимостью. поэтому ты сначала обдумываешь как использовать и только потом придумываешь внутренний код.
 
вот как я использую свой класс.
задача: размещать css в head, а все скрипты - перед закрывающимся тегом body (как это выглядит в html можно посмотреть например здесь). при этом чтоб запрашивать скрипты и стили можно было в любом месте любого шаблона и подшаблона. также требуется автоматически удалять дубликаты скриптов и стилей (т.е. если я из двух подшаблонов запрошу jquery тег <script src="jquery.js"></script> должен быть вставлен только один раз).
 
я пишу в шаблоне:
HTML

<html>
<head>
{resources->require_css src="/css/my.css"}
{resources->require_jquery}
{resources->insert_css}
</head>
<body>
 // тут вставляем содержимое основной части, пусть это будет модуль, где вьюха берётся из подшаблона
{resources->insert_scripts}
</body>
</html>
 

в подшаблоне:
HTML

{resources->require_jquery}
<div>blablabla1</div>
{resources->require_js src="/js/my.js"}
<div>blablabla2</div>
{resources->require_css src="/css/my2.css"}
 

на выходе получаем
HTML

<html>
<head>
<link rel="stylesheet" type="text/css" src="/css/my.css" />
<link rel="stylesheet" type="text/css" src="/css/my2.css" />
</head>
<body>
<div>blablabla1</div>
<div>blablabla2</div>
<script src="/js/jquery-latest.js"></script>
<script src="/js/my.js"></script>
</body>
</html>
 

как именно это реализуется в коде - дело десятое, многие тут смогут написать реализацию этой идеи если им будет надо
а зачем скрипты вниз вообще пихать?  
Спустя 11 секунд добавил
я про js
Спустя 59 секунд добавил
я общие правила стилей описываю в одном месте, а на каждую страницу создаю свой файл стиля
Записан
master    ↓ 
03 Декабрь, 2011, 09:08:17 , спустя 9 минут
НЕ ХУЕТА! ХУЕТА!

Квадратов сколько видишь ты?
Группа: Джедаи

Карма: 44
Сообщений: 1893
Сила слова: 2.32

а зачем скрипты вниз вообще пихать?
http://developer.yahoo.com/performance/rules.html#js_bottom
Записан

Givi    ↓ 
03 Декабрь, 2011, 11:36:59 , спустя 2 часа 28 минут 42 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 42
Сообщений: 2259
Сила слова: 1.86

iphine5g, ну, из того что я заметил, и что явно нужно будет в первую очередь исправлять/доделывать:
1. Раз уж указываешь членам класса их доступность, то почему не делаешь то же самое и для методов класса? Это нужно делать.
2. Класс (и его методы) вообще не должны бы ничего выводить на экран. Точнее, это сделать можно, но, так как у тебя все методы выводят куски обязательной информации (то есть каждый из методом обязательно должен вывести свой кусок хмтл-кода, иначе лажа), то корректнее будет сделать отдельный метод с выводом всего собранного в кучу кода. И именно этот метод будет делать вывод на экран, а не те методы, который он вызывает.
3. Мастер примерно прав - нужно писать решение исходя из задачи, а не пытаться создать задачу исходя из имеющегося решение (да ещё и кривого).
Записан

Все, что говорят другие - неправда! До тех пор, пока ты сам в это не поверишь.
Если человек дурак, то... чур это не я!
Страниц: [1]
Печать
 

Перейти в:  

Этот топик скрыли: adw0rd