|
iphine5g ↓
|
 |
|
03 Декабрь, 2011, 07:20:37
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: -2
Сообщений: 224 Сила слова: -0.89
|
Не хочу в речную все это делать (писать пути, подключать), решил сделать так.
Вот мой первый класс, постигаю азы ООП, надеюсь я не безнадежен))
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>
<head>
{resources->require_css src="/css/my.css"}
{resources->require_jquery}
{resources->insert_css}
</head>
<body>
// тут вставляем содержимое основной части, пусть это будет модуль, где вьюха берётся из подшаблона
{resources->insert_scripts}
</body>
</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>
<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>
<head>
{resources->require_css src="/css/my.css"}
{resources->require_jquery}
{resources->insert_css}
</head>
<body>
// тут вставляем содержимое основной части, пусть это будет модуль, где вьюха берётся из подшаблона
{resources->insert_scripts}
</body>
</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>
<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
|
|
|
|
|
|
Записан
|
|
|
|
|
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
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>
|
|
|
|
|
Записан
|
|
|
|
|