2013-06-19 15:41:18

Свой собственный блог, движок блога на php

Автор: Олег ПАльгов Просмотров: 2426 Комментариев: 0

Теги: ...

Движок блога для начинающих - http://fales.astranar.ru/blog.Version%20-%200.8.zip Версия движка 0.8

 

 

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

Спасибо за внимание, пишите код, совершенствуйтесь! 

Ну а этот код ни в комем случае не идеален! Написан спеиально для тех, кто только начинает учить программирование, поэтому опытным программистам тут учиться нечему.

2013-06-14 14:37:42

Рисуем диск в Photoshop

Автор: dima Просмотров: 2000 Комментариев: 4

Теги: ...

Здравствуйте.

Сегодня я хочу рассказать вам, как нарисовать CD диск, причем с его лучшей стороны, то есть, с радужным покрытием. Может показаться, что это очень простая задача. Так оно и есть, но только если знаешь, что делать. Я знаю, и расскажу вам. Посмотрите на рисунок 1. Если нравится,- приступаем.

 

Как нарисовать CD диск в Photoshop.

 

(Рис. 1).

2013-06-05 15:58:44

Гостевая книга – продолжение

Автор: Anton Kalny Просмотров: 1104 Комментариев: 2

Теги: ...

Приветствую!

 

На прошлом уроке мы начали создавать простое приложение на нашем фреймворке – Гостевую книгу. У нас уже даже выводились записи на страницу.

 

Сейчас мы продолжим, и добавим возможность добавления записей. Давайте подумаем, что для этого надо. Во-первых – форма добавления сообщения, с полем «Имя» и текстовым полем «Текст сообщения». Во-вторых, эта форма должна куда-то отправлять данные.

 

А пусть она их отправляет прямо по этому же адресу –

 

http://advicezcms/guestbook

 

Тогда нам в контроллере нужно будет выяснить, были данные от формы или нет. Если были – добавляем запись в таблицу БД, и уже потом запрашиваем у модели массив записей. Вроде всё просто.

 

Как же нам узнать, были ли от формы данные? В суперглобальном массиве $_SERVER есть такой элемент – REQUEST_METHOD. Так вот, мы всегда можем обратиться к этому элементу, и узнать, каким методом запрошена страница – GET или POST. Методом GET обычно страница запрашивается через адресную строку браузера, а методом POST – формой.

2013-06-05 14:32:07

Первое приложение – гостевая книга

Автор: Anton Kalny Просмотров: 875 Комментариев: 0

Теги: ...

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

 

И вот как раз и первое исправление. Перейдите по такому адресу:

 

http://advicezcms/routes.xml

 

Мы видим такую картину:

 

2013-06-05 12:23:52

Модуль DB

Автор: Anton Kalny Просмотров: 389 Комментариев: 0

Теги: ...

Всем привет!

 

Продолжаем создавать наш фреймворк, и на сегодняшнем занятии мы наконец приступим к работе с БД. Точнее с модулем DB.

 

Должна быть такая структура папок:

 

2013-06-05 11:58:11

Модули

Автор: Anton Kalny Просмотров: 429 Комментариев: 0

Теги: ...

Здравствуйте!

 

На этом занятии я собирался рассмотреть тему базы данных. Я сначала хотел весь функционал запихать в класс Model, и это было бы логично. Но мы сделаем по-другому.

 

Нам так или иначе понадобится поддержка модулей в дальнейшем, так почему бы не заключить нам всю работу с БД в модуль?

 

Поэтому с базами данных мы повременим, а займёмся поддержкой модулей.

 

Сразу продумаем структуру папок. Пусть будет папка «modules» в корне сайта, а в ней папки с названиями модулей. Например, auth, DB и т.д. Создайте папку modules, а в ней папку DB. В папке DB – файл db.php.

 

Теперь в корне сайта создайте файл modules.xml, вот такого содержания:

 

<modules>
	<module name = 'DB' active = '1'>
		<file>db.php</file>
	</module>
</modules>

2013-06-05 11:50:16

Model

Автор: Anton Kalny Просмотров: 423 Комментариев: 0

Теги: ...

Здравствуйте!

 

Продолжаем работу над нашим фреймворком. Сегодня займемся моделью. Создайте файл model.php и подключите его в index.php. Вот класс Model:

 

<?php defined( 'ROOT_PATH' ) or die( 'No direct script access.' );
class Model {
    
	//Создает и возвращает объект наследник класса Model, 
	//по имени модели $model_name
	public static function factory ( $model_name ) {
		//каталог контроллера (получаем имя текущего контроллера)
		$controllerDir = APP_PATH . strtolower( FrontController::controller() ) . DS;
        
		//получаем файл модели
		$modelFile = $controllerDir . 'model' . DS . strtolower( $model_name ) . Options::get( 'ext' );
        
		//формируем имя класса модели    
		$modelClass = ucfirst( strtolower( $model_name ) );
        
		//файл не найден
		if ( ! file_exists( $modelFile ) ) {
			throw new AppException( 'Не найден файл модели ' . $modelClass );
		}
        
		//файл найден, подключаем файл
		require_once( $modelFile );
        
		//класс не найден
		if ( ! class_exists( $modelClass ) ) {
			throw new AppException( 'Не найден класс модели ' . $modelClass );
		}
        
		//класс найден, создаем рефлексию
		$rc = new ReflectionClass( $modelClass );
        
		//проверяем, чтобы класс модели наследовался от Model
		if ( ! $rc->isSubclassOf( 'Model' ) ) {
			throw new AppException( 'Класс ' . $modelClass . ' должен быть унаследован от класса Model' );
		}
        
		//создаем экземпляр модели и возвращаем ссылку на него        
		return new $modelClass();
	}
}

2013-06-05 11:39:21

View

Автор: Anton Kalny Просмотров: 406 Комментариев: 0

Теги: ...

Приветствую!

 

Сегодняшнее занятие посвящено классу View – механизму отображения html-кода наших контроллеров.

 

У каждого контроллера может быть несколько отображений. Например, у контроллера Articles – отображения article, list. Отображение article отображает одну статью, отображение list – список статей.

 

Пусть у нас будет класс View, который по названию отображения загружает и возвращает его html-код, а также вставляет в него переменные.

 

Например, сейчас у нас контроллер работает так:

 

$text = 'Это текст, который возвращает контроллер';
$this->response->body( $text );

 

А мы хотим так:

 

$view = View::factory( 'article' );
$this->response->body( $view->render() );

2013-06-05 11:23:33

Виджет – вторичный запрос

Автор: Anton Kalny Просмотров: 379 Комментариев: 0

Теги: ...

Здравствуйте, продолжим создавать наш фреймворк. На этом уроке попробуем реализовать вторичный запрос. Что для этого нужно? А нужно вызвать метод run фронт контроллера из другого контроллера, и передать ему урл контроллера-виджета.

 

Сложновато. Давайте лучше сразу на практике. Создайте в папке «application» папку «mywidget», а в ней файл controller.php. Вот содержимое файла:

 

<?php defined( 'ROOT_PATH' ) or die( 'No direct script access.' );
class Mywidget extends Controller{
	public function view() {
		$this->response->body( 'Этот текст выводится виджетом Mywidget' );
	}
}

 

Роут для этого контроллера не нужен, он ведь у нас подразумевается как вторичный, а значит должен вызываться вот так:

 

$widget = FrontController::instance()->run( 'Mywidget/view' );

2013-06-05 11:13:49

Шаблонизатор

Автор: Anton Kalny Просмотров: 388 Комментариев: 0

Теги: ...

Привет всем! Продолжаем создавать наш фреймворк.

 

Сегодня сделаем шаблонизатор – Класс Templator, который будет вставлять ответ нашего контроллера в определенное место html-шаблона.

 

Создайте файл templator.php и подключите его в index.php. Объявите класс Templator в файле templator.php:

 

<?php defined( 'ROOT_PATH' ) or die( 'No direct script access.' );
class Templator {
	private static $vars = array();
	public static function template( $content ) {
		return $content;
	}
}

 

Класс пока ничего не делает, просто возвращает тот контент, что получил. Но все-же давайте сразу его прикрутим к фронт контроллеру. Откройте frontcontroller.php, и метод template() приведите вот к такому виду:

 

private function template( $content ) {       
	$template = trim( Options::get( 'template' ) );
	$content = Templator::template( $content, $template );
	return $content;
}