**ThinkPHP 5.1 (LTS версия) — 12 лет верности, PHP-фреймворк, которому можно доверять**

[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/top-think/framework/badges/quality-score.png?b=5.1)](https://scrutinizer-ci.com/g/top-think/framework/?branch=5.1)

[![Build Status](https://travis-ci.org/top-think/framework.svg?branch=master)](https://travis-ci.org/top-think/framework)

[![Total Downloads](https://poser.pugx.org/topthink/framework/downloads)](https://packagist.org/packages/topthink/framework)

ThinkPHP 5.1 представляет собой PHP-фреймворк с долгосрочной поддержкой (LTS), который предлагает ряд улучшений в базовой архитектуре и новые функции. Вот некоторые из основных особенностей:

* Использование контейнеров для унифицированного управления объектами.
* Поддержка Facade.
* Маршрутизация с использованием аннотаций.
* Междоменная маршрутизация.
* Независимость конфигурации и маршрутизации от каталогов.
* Отмена системных констант.
* Улучшенные вспомогательные функции.
* Механизм псевдонимов для библиотек.
* Усовершенствованные условия запросов.
* Обновлённый механизм запросов.
* Двухуровневая конфигурация.
* Доработанная инъекция зависимостей.
* Поддержка стандарта PSR-3 для журналов.
* Промежуточное ПО (доступно начиная с версии 5.1.6).
* Поддержка Swoole/Workerman (начиная с версии 5.1.18).

Для работы с ThinkPHP 5.1 требуется PHP версии 5.6 или выше.

**Установка**

Чтобы установить фреймворк, используйте Composer:

~~~
composer create-project topthink/think tp
~~~

Запустите сервис:

~~~
cd tp
php think run
~~~

После этого вы сможете получить доступ к веб-приложению через браузер по адресу:

~~~
http://localhost:8000
~~~

Обновление фреймворка:

~~~
composer update topthink/framework
~~~

**Онлайн-руководство**

Доступны следующие ресурсы:

+ Полное руководство по разработке (https://www.kancloud.cn/manual/thinkphp5_1/content).
+ Руководство по обновлению (https://www.kancloud.cn/manual/thinkphp5_1/354155).

**Структура каталогов**

Исходная структура каталогов выглядит следующим образом:

~~~
www  WEB部署目录(或者子目录)
├─application           应用目录
│  ├─common             公共模块目录(可以更改)
│  ├─module_name        模块目录
│    ├─common.php      模块函数文件
│    ├─controller      控制器目录
│    ├─model           模型目录
│    ├─view            视图目录
│    └─ ...            更多类库目录
│
│  ├─command.php        命令行定义文件
│  ├─common.php         公共函数文件
│  └─tags.php           应用行为扩展定义文件
│
├─config                应用配置目录
│  ├─module_name        模块配置目录
│    ├─database.php    数据库配置
│    ├─cache           缓存配置
│    └─ ...
│
|  ├─app.php            应用配置
|  ├─cache.php          缓存配置
|  ├─cookie.php         Cookie配置
|  ├─database.php       数据库配置
|  ├─log.php            日志配置
|  ├─session.php        Session配置
|  ├─template.php       模板引擎配置
|  └─trace.php          Trace配置
│
├─route                 路由定义目录
│  ├─route.php          路由定义
│  └─...                更多
│
├─public                WEB目录(对外访问目录)
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写
│
├─thinkphp              框架系统目录
│  ├─lang               语言文件目录
│  ├─library            框架类库目录
|    ├─think           Think类库包目录
|    └─traits          系统Trait目录
|
|  ├─tpl                系统模板目录
|  ├─base.php           基础定义文件
|  ├─console.php        控制台入口文件
|  ├─convention.php     框架惯例配置文件
|  ├─helper.php         助手函数文件
|  ├─phpunit.xml        phpunit配置文件
|  └─start.php          框架入口文件
|
├─extend                扩展类库目录
├─runtime               应用的运行时目录(可写,可定制)
├─vendor                第三方类库目录(Composer依赖库)
├─build.php             自动生成定义文件(参考)
├─composer.json         composer 定义文件
├─LICENSE.txt           授权说明文件
├─README.md             README 文件
├─think                 命令行入口文件
~~~

Также можно использовать встроенный веб-сервер PHP для быстрого тестирования. После перехода в корневой каталог выполните команду:

```php
php think run
```

**Соглашения об именах**

ThinkPHP5 следует стандартам PSR-2 и PSR-4 для именования и автоматической загрузки. Также обратите внимание на следующие соглашения:

### Каталоги и файлы

* Каталоги не имеют строгих правил, допускается использование как верблюжьего регистра, так и нижнего подчёркивания.
* Файлы классов и функций всегда имеют расширение .php.
* Имена файлов классов соответствуют пространству имён и находятся в том же каталоге.
* Именование классов соответствует стандарту CamelCase, где первая буква заглавная.

### Функции и классы, атрибуты

* Классы именуются с использованием CamelCase и начинаются с заглавной буквы, например, User, UserType. Не требуется добавлять суффикс, например, класс UserController должен называться просто User.
* Функции именуются с помощью строчных букв и подчёркивания (_), например, get_client_ip.
* Методы именуются с использованием CamelCase и начинаются со строчной буквы, например, getUserName.
* Атрибуты именуются с использованием CamelCase и начинаются со строчной буквы, например, tableName, instance.
* Магические методы, такие как __call и __autoload, начинаются с двух символов подчёркивания.

### Константы и конфигурации

* Константы именуются заглавными буквами и подчёркиванием, например, APP_PATH и THINK_PATH.
* Параметры конфигурации именуются строчными буквами и подчёркиванием, например, url_route_on и url_convert.

### Таблицы данных и поля

* Таблицы и поля данных именуются строчными буквами с подчёркиванием, при этом рекомендуется избегать использования подчёркивания в начале имени поля. Например, таблица think_user и поле user_name. Не рекомендуется использовать CamelCase или китайские символы для именования таблиц и полей.

**Участие в разработке**

Дополнительную информацию о ThinkPHP5 можно найти на GitHub (https://github.com/top-think/framework).

**Авторские права**

ThinkPHP распространяется под лицензией Apache 2.0 и доступен для свободного использования. В данном проекте отдельно обозначена информация об авторских правах на сторонний исходный код и двоичные файлы.

Copyright © 2006-2018 by ThinkPHP (http://thinkphp.cn)

All rights reserved.

Торговая марка ThinkPHP® и авторские права принадлежат компании Shanghai Topthink Information Technology Co., Ltd.

Более подробную информацию см. в [LICENSE.txt](LICENSE.txt).