Работа с фреймворками php

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

simple php wramework. Example my codeStyle and .

andy87/php-framework

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Делается с нуля, своими силамы, бес подглядываний, для демонстрации своего codeStyle и видения разработки ( поставил перд собой задачу: написать фреймворк своими силами — это же всегда интересно )
За основу была взята концепция фреймворка yii2.
framework в процессе разработки.

Проект в большей степени подражает структуре yii2, но не полностью.

 📁 app ├── 📁 _ # ядро проекта ├── 📁 config # Дирректория с настройками приложения │ ├── 📁 setups # Дирректория с настройками для конкретного хоста ( HOST_NAME ) │ │ └── 📄 localhost.php # Приватные настройки с реквизитами для подключений (Пример: HOST_NAME localhost ) │ ├── 📄 params.php # Настройки компонентов │ ├── 📄 routes.php # Настройка маршрутов ├── 📁 controllers # Контроллеры вашего приложения │ └── 📄 SiteController.php # Пример: Контроллер Site ├── 📁 models # Используемые модельки проекта │ └── 📁 source # Исходные файлы моделек ├── 📁 satic # Статика проекта │ ├── 📁 css # Стили │ ├── 📁 docs # Документы │ ├── 📁 fonts # Шрифты │ ├── 📁 img # Картинки │ └── 📁 js # js └── 📁 views # Вьюхи/Представления ├── 📁 layouts # Дирректория для обёрток вьюх └── 📁 site # шаблоны для контроллера `site` 

для тех кто в теме и кому интересно что у фреймворка под лифчиком под капотом.

 📁 _ ├── 📁 base # Базовые класы для наследований │ └── 📁 prototype # диррекория содержащая traits ├── 📁 components # дирриктория с азовыми компонентами фреймворка │ └── 📁 main # Основные компоненты App() ├── 📁 guide # дирриктория с гайдами │ ├── 📁 en # гайд на Английсков │ └── 📁 ru # гайд на Русском ├── 📁 helpers # вспомогательные компоненты ├── 📁 runtime # файлы генерируемые фрейморком │ ├── 📁 cache # кеш │ └── 📁 logs # логи ├── 📁 setups # настройки фреймворка │ ├── 📄 autoload.php # настройка автозагрузки классов │ └── 📄 const.php # Список констант └── 📁 templates # шаблоны ошибок └── 📁 generator # генерируемые шаблоны └── 📁 errors # страницы ошибок 403/404/500/502/504/502 

Используя консоль в связке с командой cd проникаете в дирректорию с будующим проектом и используете команду

git clone https://github.com/andy87/php-framework .

При использовании web-сервера Apache
в корне проекта требуется наличие файла .htaccess с минимальным содержимым:

 Options -Indexes Options +FollowSymlinks RewriteEngine On RewriteCond % ^/(js|css|img|docs|fonts|static) RewriteRule ^js/(.*)$ app/static/js/$1 [L] RewriteRule ^css/(.*)$ app/static/css/$1 [L] RewriteRule ^img/(.*)$ app/static/img/$1 [L] RewriteRule ^docs/(.*)$ app/static/docs/$1 [L] RewriteRule ^fonts/(.*)$ app/static/fonts/$1 [L] RewriteRule ^static/(.*)$ app/static/$1 [L] RewriteCond % !^/app/static/ RewriteCond % !favicon.ico RewriteCond % !-f [OR] RewriteCond % !-d RewriteRule ^(.*)$ app/$1 # При желании ErrorDocument 404 /app/_/templates/errors/404.php # . 403/500/502/504/508 

При использовании web-сервера Nginx
минимальные настройки:

Внутрение зависимости и настройка фремворка

  • Namespace’ы начинаются с _ (нижнего подчёркивания)
  • Всё «мясо» фреймворка лежит в дирректории app
  • правила роутинга настрайваются в app/config/routes.php
  • контроллеры/экшоны в routes.php указываются в lowercase , при имени контроллера/экшона CamelCase имя пишется через тире
    Пример: роут uri => main-server/restart-now вызовит контроллер MainServerController экшон actionRestartNow
  • Настройки подключения для домена настрайваются в app/config/setups/ .php
  • Models настледуется от BaseModels
  • Controller настледуется от BaseController
  • Имена Controller’ов имеют суфикс Controller
    Пример: контроллер Main имеет имя файла класса MainController
  • Имена Action’ов имеют префикс action
    Пример: экшон Login имеет имя метода actionLogin
  • экшон должен вернуть
    — для вывода HTML — результат render()
    — для вывода JSON — возвращать renderJson() либо return array

Из консоли используя cd направляемся в дирректорию app в ней используем для генерации файлов, следующие команды:

  • Генерация контроллера
    _ create/controller MyProfile
    Будет сгенерирован файл: /app/controllers/MyProfileController.php (шаблон)
  • Генерация представления/шаблона
    _ create/view landingPage mainPAge
    Будет сгенерирован файл: /app/views/landing-page/main-page.php (шаблон)
  • Генерация модели
    _ create/model BestCar table_car
    Будут сгенерированы 2 файла: /app/models/source/BestCar.php (шаблон), /app/models/BestCar.php (шаблон)
  • Генерация модуля
    _ create/module Test
    Будет сгенерирован файл: /app/modules/Test.php (шаблон)
  • Генерация миграций
    _ create/migrate Skill
    можно добавить дполнительные параматры Имя таблицы , Комментарий к таблице
    Пример: _ create/migrate Skill table_name «Комментарий к таблице»
    Будет сгенерирован файл: /app/migrations/m000000_000000_Skill.php (шаблон)

прикол в том что я не планировал вводить миграции, а в ходе работы вдруг захотелось. Пришлось их в прямом смысле слова — вкорячить. Бога ради не хотел я костыли делать, но один всёже пришлось связаный с CLI.

  • Просмотр списка не зарегистрированных миграцый
    _ migrate/list
    Пример:
Migration pending list: - m200509_203019_skill - m200509_203029_soft 
Migrations: - table `table_1` exists! - table `table_2` created - table `table_3` SQL error 

Реализованы методы модели

Оцените статью