Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Идеальная структура фаловой системы сайта

Сообщения:  [1-10]   [11-14] 

 
 автор: BMW   (23.08.2011 в 10:01)   письмо автору
 
   для: BMW   (22.08.2011 в 19:13)
 

Спасибо всем, кто попытался помочь в моем php-развитии =) Особенно ценны были советы sl1p и конечно Axxil.

  Ответить  
 
 автор: Axxil   (23.08.2011 в 09:53)   письмо автору
 
   для: BMW   (22.08.2011 в 21:02)
 

Если схематично, то вам понадобится 3 папки:

models
controllers
templates

В первой будут находиться классы для работы с данными (можно сразу обеспечить уровень абстракции, чтобы жёстко не зависеть от источника данных)

В папке controllers будет находиться логика сайта. Все условия, обработка входных данных и т.д.

В папке templates - шаблоны сайта. Т.е. html код.

Все url запросы лучше тащить через один файл, называемый роутером. С помощью htaccess можно настроить сайт так, что любой набранный урл будет перенаправляться на этот файл router.php

Простейшая страница в сборе может выглядеть, например, так (по мотивам реально функционирующего фреймворка):

<?
  
require_once('config.php');
  require_once(
'autoload.php');
  
  
$data component::load('users/front')->getUsersFetch();
  
  echo  
spec::load('view')->showTemplate($data);
?>


С помощью функции __autoload можно заставить классы загружаться в в тот момент, когда (и если) они нужны, а паттерн singleton обеспечивает отсутствие дубликатов объектов.

Класс контроллера может выглядеть примерно так:

<?
class controllers_users_front extends generic_controller{
  
  public function 
getUsersFetch(){
    return 
$this->modelUsers->getUsersFetch();
  }

  public function 
__construct(){
    
$this->modelUsers model::load('users');
    
parent::__construct(); 
  }
  
}
?>


Класс модели, примерно так:

<?

  
class model_users extends generic_model{
     
     public function 
getUsersFetch(){
       return 
parent::query('SELECT * FROM users WHERE status = ?i',array(1),'assoc');
     }
  
   }
?>


Вывод шаблона может выглядеть примерно так:

<?
class spec_view extends Smarty{
  public function 
showTemplates($data){
    
parent::assign('data',$data);
    return 
parent::show('front/users.tpl');
  }
}
?>


Это всё, как Вы понимаете, схема. В одном сообщении вообще трудно сколь-нибудь подробно описать принципы реализации MVC. Но в ней сказано достаточно, на мой взгляд, ключевых слов, чтобы составить представление о проблеме.

  Ответить  
 
 автор: sl1p   (22.08.2011 в 23:41)   письмо автору
 
   для: BMW   (22.08.2011 в 21:37)
 

вы наверное просто не поняли что такое MVC раз задаете такие вопросы.
http://ru.wikipedia.org/wiki/Model-View-Controller

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

а вообще:
http://www.google.com.ua/#sclient=psy&hl=ru&source=hp&q=MVC+php&pbx=1&oq=MVC+php&aq=f&aqi=g5&aql=&gs_sm=e&gs_upl=2750l3435l0l3598l7l4l0l0l0l0l223l66 0l0.3.1l4l0&fp=e20f31e58a912210&biw=1366&bih=632

и первая ссылка которая детально "в картинках":) всё объясняет.
http://habrahabr.ru/blogs/php/31270/

  Ответить  
 
 автор: BMW   (22.08.2011 в 21:37)   письмо автору
 
   для: Valick   (22.08.2011 в 21:27)
 

внутренние возможности языка пхп, реализумые по срествам написания программного кода

  Ответить  
 
 автор: Valick   (22.08.2011 в 21:27)   письмо автору
 
   для: BMW   (22.08.2011 в 21:21)
 

а что по вашему туда входит?

  Ответить  
 
 автор: BMW   (22.08.2011 в 21:21)   письмо автору
 
   для: Valick   (22.08.2011 в 21:11)
 

блокнот не входит в инструментарий пхп =)

  Ответить  
 
 автор: Valick   (22.08.2011 в 21:11)   письмо автору
 
   для: BMW   (22.08.2011 в 21:02)
 

блокнотом

  Ответить  
 
 автор: BMW   (22.08.2011 в 21:02)   письмо автору
 
   для: Axxil   (22.08.2011 в 20:00)
 

Супер) а какими инструментами реализовать MVC на php?

  Ответить  
 
 автор: sl1p   (22.08.2011 в 20:11)   письмо автору
 
   для: Axxil   (22.08.2011 в 20:00)
 

+1 идеальный паттерн почти для любого решения =)

  Ответить  
 
 автор: Axxil   (22.08.2011 в 20:00)   письмо автору
 
   для: BMW   (22.08.2011 в 19:13)
 

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

Что касается скелета, то у суслика он один, а у слона несколько другой, всё зависит от того сколько и какого мяса надо будет удерживать, с какой скоростью и в каком виде перемещать его в пространстве.

Но, общие принципы проектирования, безусловно, имеются. Я советую копать в сторону MVC паттерна, так как он сейчас король и большинство фреймворков и cms построены на этой модели.

Начать изучение можно с википедии: http://ru.wikipedia.org/wiki/Model-View-Controller

  Ответить  

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования