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

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

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

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

Новости

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

Краснодарское время: 25 Май, 2012, 07:31:47

Страниц: [1]
Печать
Автор Тема: Класс ресурсов (css,images,js)  (Прочитано 229 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
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 секунд
НЕ ХУЕТА! ХУЕТА!

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

Карма: 345
Сообщений: 20790
Сила слова: 1.66

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

забанен. могу забанить других, пишите в личку
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 секунды
НЕ ХУЕТА! ХУЕТА!

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

Карма: 345
Сообщений: 20790
Сила слова: 1.66

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
Сообщений: 1229
Сила слова: 0

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

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

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

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

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
Сообщений: 2080
Сила слова: 2.12

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

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

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

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

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

Все, что говорят другие - неправда! До тех пор, пока ты сам в это не поверишь.
Если человек дурак, то... чур это не я!
komprenda    ↓ 
15 Май, 2012, 12:31:56 , спустя 163 дня 12 часов 54 минуты 57 секунд
НЕ ХУЕТА! ХУЕТА!


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

Можно и так обойтись
 
PHP

 
<?php
 
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
 
?>
<!DOCTYPE html>
<html>
    <head>
<?php if (!empty($base_url)) { ?>
        <base href="<?=$base_url?>">
<?php } ?>
        <meta charset="utf-8">
<?php if (!empty($keywords)) { ?>
        <meta name="keywords" content="<?=$keywords?>">
<?php } ?>
<?php if (!empty($description)) { ?>
        <meta name="description" content="<?=$description?>">
<?php } ?>
<?php if (!empty($title)) { ?>
        <title><?=$title?></title>
<?php } ?>
<?php
 
if (!empty($css_arr)) {
    for ($i = 0, $j = count($css_arr); $i < $j; ++$i) {
       
?>
        <link rel="stylesheet" type="text/css" href="<?=$css_arr[$i]?>">
<?php
 
    }
}
 
?>
<?php
 
if (!empty($js_arr)) {
    for ($i = 0, $j = count($js_arr); $i < $j; ++$i) {
       
?>
        <script type="text/javascript" src="<?=$js_arr[$i]?>"></script>
<?php
 
    }
}
   
?>
<?php if (!empty($css)) { ?>
        <style type="text/css"><?=$css?></style>
<?php } ?>
<?php if (!empty($js)) { ?>
        <script type="text/javascript"><?=$js?></script>
<?php } ?>
    </head>
    <body>
 
 

Записан
Страниц: [1]
Печать
 

Перейти в:  

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