[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Зацените ГавНоКод :)))
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25
inpost
1. Бабайка.
2. Комп захламлять. Потом ещё время тратить на чистку. Иногда и запустить захочется.
3. Удобнее за кодом наблюдать, чем распаковывать и из архива открывать. Тут же можно скопи-пастить из темы (редактировать сообщение, копировать), и всё как у человека, только свою замену сделать.
4. Мысль приходит со временем. Я могу посмотреть, через время опять глянуть.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Shkiper
inpost шас сделаем
Shkiper
user posted image
index.php
<?php

//--- Имя папки с файлами, которые выполняют операцию --//
$aplication = "aplication";


//--- Имя системной папки --//
$system = "system";


//--- Имя папки с шаблоном ---//
$template = "template";


//--- Ну а тперь создаем константы с путями до системы, aplication ну и канечно до шаблона. А и еще ключик ---//
define("SYSPATH", $_SERVER['DOCUMENT_ROOT'] . "/" . $system . "/");
define("APPATH" , $_SERVER['DOCUMENT_ROOT'] . "/" . $aplication . "/");
define("TPLPATH", $_SERVER['DOCUMENT_ROOT'] . "/" . $template . "/");
define("KEY" , true);


//--- Устанавливаем уровень ошибок ---//
error_reporting(E_ALL | E_STRICT);


//--- Нам нужно убедится что все папки существуют ---//

if(!file_exists(SYSPATH) || !file_exists(APPATH) || !file_exists(TPLPATH))
{
exit("Скрипт поврежден. Он не может работать с повреждениями. Воть так воть :)");
}


//--- Подключаем отображаемый файл ---//
require SYSPATH . 'bootstrap.php';


//--- И теперь выводим результат на экран ---//

echo $request->body();
echo "<br /><br />Время выполнения скрипта: <i><b>" . microtime(true) . "</b></i>";

.htaccess
AddDefaultCharset UTF-8
php_flag magic_quotes_gpc Off
Options Indexes FollowSymLinks
DirectoryIndex index.php
php_value max_execution_time 200
php_value max_input_time 200

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?url=$1 [L,QSA]
</IfModule>

system/bootstrap.php
<?php if(!defined('KEY')) die("No success. КОроче валяй отсюдо, по добру, по здорову");

//--- Устанавливаем time zone(ну а что kohana умней что ли:)) ---//
date_default_timezone_set('Europe/Moscow');



//--- Устанавливаем настроки локали ---//
setlocale(LC_ALL, 'en_US.utf-8');



//--- Бля а что дальше то делать. х3 получается. ладно подумаю и потом напишу :) ---//
//--- продолжаем думать :) ---//
//--- нам нужно получить имя контроллера из URL. Давайте напишем функцию ---//




function getUrlController ()
{
if(!empty($_REQUEST['url']))
{
$match = explode("/", $_REQUEST['url']);
require SYSPATH . 'config/url.php';

if(count($url) > 0)
{
foreach($url as $key=>$value)
{
if(preg_match($key, $_REQUEST['url']))
{
$result = $value;
}
}


if(empty($result))
{
$result = $match[0];
}

return $result;
}
else
{
return $match[0];
}
}

else
{
return null;
}
}




//--- Ну вроде что-то есть ---//
//--- Теперь надо что-то делать с модулями, хелперами, библиотеками. Их надо тоже как-то получить. И нужно еще подключать прописаные по дефолту библиотеки .... Вот гемороя скока. Я думаю пока тоже функцию написать ---//

function getDefaultHelpers ($helpers)
{
foreach($helpers as $helper)
{
require APPATH . 'helpers/' . $helper . ".php"
;
}
return false;
}



//--- Теперь позаботимся о загрузке библиотек, код такой как и сверху хех :) ---//
function getDefaultLibraryes ($libraries)
{
foreach($libraries as $library)
{
require APPATH . 'libraries/' . $library . ".php"
;
}
return false;
}



//--- Да и пока не забыл. Нам нужно создать функцию, которая будет нам сообщять об ошибках. Чтоб не писать каждый раз throw new Exception() и т.д. ---//
function error ($error_text)
{
exit($error_text);
}



//--- сейчас я преступлю к самому геморойному делу. почему к геморойному увидите сами ---//


require SYSPATH . 'zzika/controller.php';
require SYSPATH . 'zzika/http.php';
require SYSPATH . 'zzika/cookie.php';
require SYSPATH . 'zzika/load.php';
require SYSPATH . 'zzika/user_controller.php';
require SYSPATH . 'zzika/core.php';


//--- стрлько require`ов пздс полный. я конечно в ахуе не всеже ---//
//--- теперь создаем обьект класса и выводим боди на экранчик юзеру ---//


$request = new Zzika;

system/zzika/core.php
<?php if(!defined('KEY')) die("No success. КОроче валяй отсюдо, по добру, по здорову");

class Zzika
{
//--- переменные с массивом настроек ---//
public $config;
public $database;
public $autoload;

//--- тепрь длеаем переменные для выполнения нужных операций ---//
public $load;
public $http;
public $cookie;

function __construct ()
{
//--- Нам нужно подключить все файлы с конфой ---//



//--- общая конфигурация ---//

require SYSPATH . 'config/config.php';
$this->config = $config;



//--- настройки для соеденения с БД и всеми операциями ---//
require SYSPATH . 'config/database.php';
$this->database = $database;



//--- теперь автолоад ---//
require SYSPATH . 'config/autoload.php';
$this->autoload = $autoload;

unset($config, $database, $autoload);

//--- а также доступным посылку HTTP запросов браузеру ---//
$this->main = new load;
$this->hd = new headers;
}



//--- функция выводит все на экран ---//
public function body ()
{
//--- Эта функция подгатавливает все и выводит на "свет" ---//
//--- Нам нужно разобраться с автоладами ---//

if(count($this->autoload['helpers']) > 0)
{
getDefaultHelpers($this->autoload['helpers']);
}


if(count($this->autoload['libraryes']))
{
getDefaultLibraryes($this->autoload['libraryes']);
}

//--- теперь нам нужно проверить а не хочу ли я подключатся к БД автоматиески? ---//
if(isset($this->config['auto_dbconnect']))
{
$this->main->mysql_DBconncet($this->database);
}

//--- теперь нам нужно сделать класс чтоб разработчик мог загружать библиотеку когда ему захочется. Делаю я это в класса по ниже. Этот класс будет отвечать за загрузку, но не только за загрузку библиотек...., но и вида моделек и всего прочего ---//
//--- определемся с именем контроллера ---//

$urlController = getUrlController();
$controller = empty($urlController) ? $this->config['default_controller']:$urlController;
$controller_path = APPATH . 'controllers/' . $controller . '.php';

if(!file_exists($controller_path))
{
error('Отсутсвует контроллер: <b>' . $controller . '</b>');
}
else
{
require $controller_path;
$controller_obj = new $controller;
echo $controller_obj->index();

//--- тепрь нам нужно послать все заголовки, которые были устанвлены в процессе выполнения скрипта ---//
$this->hd->get_headers();
//--- теперь получаем текст ---//
$this->main->get_views();
}
unset($this->main);
}
}

system/zzika/controller.php
<?php if(!defined('KEY')) die("No success. КОроче валяй отсюдо, по добру, по здорову");

class controller
{

static $connect;

public function mysql_DBconncet ($database)
{
self::$connect = mysql_connect($database['mysql_host'], $database['mysql_user'], $database['mysql_password']);

if(self::$connect == true)
{
mysql_select_db($database['mysql_dbname'], self::$connect);
mysql_query("SET NAMES '".$database['mysql_charset']."'", self::$connect);
}
else
{
error('Невозсожно подключится к БД ' . $database['mysql_dbname']);
}
}


public function mysql_DBquery ($query_string)
{
return mysql_query($query_string) or error('Произлшла ошибка: ' . mysql_error());
}



}

system/zzika/http.php
<?php if(!defined('KEY')) die("No success. КОроче валяй отсюдо, по добру, по здорову");

class headers
{
public static $headers = array();
public static $cookies = array();

public static function send ($header)
{
self::$headers[] = $header;
return false;
}

public static function get_headers ()
{
foreach(self::$cookies as $k=>$v)
{
setcookie($v['name'], $v['value'], $v['time']);
}

foreach(self::$headers as $key=>$value)
{
header($value);
}

self::$cookies = false;
self::$headers = false;
return false;
}
}

system/zzika/cookie.php
<?php if(!defined('KEY')) die("No success. КОроче валяй отсюдо, по добру, по здорову");

class cookie extends headers
{

public function set($name, $value, $time = null)
{
self::$cookies[] = array('name'=>$name, 'value'=>$value, 'time'=>$time);
}

public function get($name)
{
if(empty($_COOKIE[$name]))
{
return null;
}
else
{
return $_COOKIE[$name];
}
}


public function del ($name)
{
setcookie($name, "", time()+0);
}

}

system/zzika/load.php
<?php if(!defined('KEY')) die("No success. КОроче валяй отсюдо, по добру, по здорову");

class load extends controller
{
public static $view_complate;

public static function library ($name)
{
$dir = SYSPATH . 'library/' . $name . '.php';
if(file_exists($dir))
{
require $dir;
}
else
{
error('Отсутсвует библиотека: <b>' . $dir . '</b>');
}
}


public function view ($name, $variables = null)
{
if(isset($variables))
{
extract($variables);
}

$view_path = APPATH . "views/" . $name . ".php";
if(file_exists($view_path))
{
$view_dir = file_get_contents($view_path);
self::$view_complate[] = eval('?>' . $view_dir);
}
else
{
exit('error');
}
}


public static function get_views()
{
$text = self::$view_complate;
$result = "";

if(count($text) > 0)
{
foreach($text as $key=>$value)
{
$result .= $value;
}
}


return $result;
}

public function model($name, $class_name)
{
$className = isset($class_name) ? $class_name:$name;
$model_path = APPATH . 'models/' . $name . ".php";
if(file_exists($model_path))
{
require $model_path;
$obj = new $className;
return $obj->index();
}
else
{
error('Отсутсвует модель: <b>'.$className.'</b>');
}
}

}

system/zzika/user_controller.php
<?php if(!defined('KEY')) die("No success. КОроче валяй отсюдо, по добру, по здорову");

class user_controller
{
public $load;
public $http;
public $cookie;

function __construct ()
{
$this->load = new load;
$this->http = new headers;
$this->cookie = new cookie;
}

}

system/config/autoload.php
<?php if(!defined('KEY')) die("No success. КОроче валяй отсюдо, по добру, по здорову");

$autoload = array(

'libraryes' => array(),
'helpers' => array(),

);

system/config/config.php
<?php if(!defined('KEY')) die("No success. КОроче валяй отсюдо, по добру, по здорову");

$config = array(

'site_name' => "Просто сайт",
'default_controller' => "welcome",
'auto_dbconnect' => false,

);

system/config/database.php
<?php if(!defined('KEY')) die("No success. КОроче валяй отсюдо, по добру, по здорову");

$database = array();

$database['mysql_host'] = "localhost";
$database['mysql_user'] = "root2";
$database['mysql_password'] = "";
$database['mysql_dbname'] = "mvc";
$database['mysql_dbprefix'] = "mvc_";
$database['mysql_charset'] = "utf-8";

system/config/url.php
<?php if(!defined('KEY')) die("No success. КОроче валяй отсюдо, по добру, по здорову");

$url = array(

'#^[a-z0-9]+[/]{1}[a-zA-Z0-9_]+[\.]html$#' => 'news',

);

aplication/controllers/welocme.php
<?php

class
welcome extends user_controller
{
public function index()
{
$this->cookie->set("kuka", "kuka", time()+3600);
$this->load->view('test', array('kuka'=>$this->cookie->get("kuka")));
$this->http->send('content-type: text/html; charset=utf-8');
}
}

aplication/views/test.php
<?php
echo $kuka;
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.