Php 4 2 руководство пользователя


Содержание

Руководство по PHP русский перевод

25.02.2008 (последний раз редактировалось 01.02.2012)
сайт: http://ru2.php.net/download-docs.php
условия использования: бесплатно

скачать руководство PHP, русский (html) В формате html. Дата редакции 26-01-2012 (много html файлов)
скачать руководство PHP, русский (html) В формате html. Дата редакции 26-01-2012 (Одним большим файлом)
скачать руководство PHP, русский (chm) В формате chm. Дата редакции 26-01-2012 (с комментариями пользователей на английском)

Официальный мануал по php.
Освещает 4 и 5 версии php.
Это руководство состоит, главным образом, из справочника функций, а также содержит справочник языка, комментарии к наиболее важным из отличительных особенностей PHP, и другие дополнительные сведения.
онлайн версия справочника по функциям php

Содержание руководства:

Авторские права
Руководство по PHP
Предисловие
Приступая к работе
Введение
Простой учебник
Установка и настройка
Общие инструкции по установке
Установка на Unix системы
Installation on Mac OS X
Installation on Windows systems
FastCGI Process Manager (FPM)
Установка расширений PECL
Проблемы?
Runtime Configuration
Справочник языка
Основы синтаксиса
Типы
Переменные
Константы
Выражения
Операторы
Управляющие конструкции
Функции
Классы и объекты
Namespaces
Исключения
Ссылки. Разъяснения
Предопределённые переменные
Предопределённые исключения
Predefined Interfaces
Context options and parameters
Supported Protocols and Wrappers
Безопасность
Вступление
Общие рассуждения
Если PHP установлен как CGI
Если PHP установлен как модуль Apache
Безопасность файловой системы
Безопасность баз данных
Сообщения об ошибках
Использование глобальных переменных (Register_Globals)
Данные, введенные пользователем
Волшебные кавычки
Сокрытие PHP
Необходимость обновлений
Отличительные особенности
HTTP-аутентификация в PHP
Cookies
Sessions
Работа с XForms
Загрузка файлов на сервер
Работа с удаленными файлами
Работа с соединениями
Постоянные соединения с базами данных
Безопасный режим
Использование PHP в командной строке
Garbage Collection
Справочник функций
Изменение поведения PHP
Обработка аудио форматов
Службы аутентификации
Расширения по работе с датой и временем
Расширения для работы с командной строкой
Расширения сжатия и архивации
Обработка кредитных карт
Криптографические расширения
Расширения для работы с базами данных
Расширения для работы с файловой системой
Поддержка человеческих языков и кодировок
Обработка и генерация изображений
Расширения по работе с почтой
Математические расширенияMathematical
Генерация нетекстовых MIME форматов
Расширения для управления процессами программ
Другие базовые расширения
Другие службы
Расширения для работы с поисковыми системами
Расширения для работы с серверами
Расширения для работы с сессиями
Обработка текста
Расширения, относящиеся к переменным и типам
Веб-сервисы
Расширения только для Windows
Обработка XML
Ядро PHP: Руководство хакера по Zend Engine
Preface
The «counter» Extension — A Continuing Example
The PHP 5 build system
Extension structure
Memory management
Working with variables
Writing functions
Working with classes and objects
Working with resources
Working with INI settings
Working with streams
PDO Driver How-To
Extension FAQs
Zend Engine 2 API reference
Zend Engine 2 opcode list
Zend Engine 1
ЧАВО — ЧАВО: ЧАсто задаваемые Вопросы и Ответы на них
Общая информация
Списки рассылки
Получение PHP
Вопросы по Базам данных
Установка
Проблемы Сборки
Использование PHP
PHP и HTML
PHP и COM
PHP и другие языки
Переход из PHP 4 в PHP 5
Разные вопросы
Appendices
История PHP и смежных проектов
Migrating from PHP 5.2.x to PHP 5.3.x
Migrating from PHP 5.1.x to PHP 5.2.x
Migrating from PHP 5.0.x to PHP 5.1.x
Миграция с PHP 4 на PHP 5
Classes and Objects (PHP 4)
Отладка в PHP
Configure options
Директивы php.ini
Список/классификация расширений
Список псевдонимов функций
List of Reserved Words
List of Resource Types
Список доступных фильтров
Список поддерживаемых транспортных протоколов
Таблица сравнения типов в PHP
List of Parser Tokens
Userland Naming Guide
Об этом руководстве
Creative Commons Attribution 3.0
Список функций

Комментарии

05.09.2009 ljubchyk
Документация по РНР, а називается html)

26.01.2010 zohen
Посмотрим что ето замануал)))

31.03.2010 Dikan
Качаю вот, говорят хорошая книга, по изучаю.

01.04.2010 Mistic
вобщем то очень доступно описано.
сам не зная не одного языка программирования в течении двух недель освоил php именно по этой книге(это было пару лет назад).
это классический мануал по php

13.07.2010 LuMeN
Надеюсь поможет поверю на слова

24.12.2010 Nosirjon
Скачаю начал изучачть html а потом php

21.04.2011 babay
Если это «PHP русский», то я — Папа Римский.

25.04.2011 виктор
Для Папы Римского, ты прочитал два слова из всего, что тут написано?
Это руководство по PHP на русском языке.
Никто тут даже не пытался сказать, что PHP русский.

Админ, поставь в названии запятую «Руководство по PHP, русский» или «Руководство по PHP на русском».

18.05.2011 KaReN
Ну попробую, до этого ,было object pascal в среде дельфи, щсейчас решил в инете прробовал html, хочу попробовать нечто большее

01.06.2011 Денис
Да не слушайте вы ни кого, нормальный такое руководство, конечно не, то что нужно было мне, но тем кто хочет его освоить самое оно!
P.S. мне нужно было описание функций и волей судьбы выплыл сюда.

02.06.2011 виктор
Денис, вот как раз в этом мануале и есть описание функций.
Вобщем то самое основное в этом справочнике описание функций

03.12.2011 Александр
Парни, если кто не понимает, что перевод с английского на русский то ему запятая не поможет :-)

08.12.2011 я php
Да да, даже можно точку с запятой поставить, все равно не поможет. ))))

24.01.2012 lili
этому человеку и php не поможет..

30.01.2012 ed-210
Кто-нибудь может сказать, почему переведенный вариант руководства за 18-02-2011 всё-равно содержит английские статьи? Есть где-то полностью русский мануал?
P.S. Ибо так лень напрягать мозг, для того чтобы вникнуть во вражескую терминологию.

01.02.2012 админ
справочники обновлены

11.04.2012 Олег
Спасибо за мануал!

23.04.2012 Станислав
Достаточный материал для полного изучения языка PHP. Ну и конечно же этот язык хоть и интерпретируемый, но все же его семантика как и его конструкции, основана на фундаменте стандарта Cи, что облегчает изучение последнего. Спасибо администратору за компиляцию документа в CHM, очень удобно пользоваться.

16.10.2015 Боря
Прочитал множество книг и документаций по PHP. Ни одна не удобна так как этот справочник от разработчиков и не объясняет этот языка лучше этого справочника, так точно и последовательно. Рекомендую всем! Можно сказать что это полный справочник по языку PHP. Удачи всем !

Бесплатные уроки программирования на PHP. Интерпретируемый язык программирования PHP. Уроки для начинающих разработчиков сайтов и веб-страниц.

Установка PHP как модуль сервера Apache. Инструкция по установке Apache 2.4 + PHP 5.6 на Windows. Серверная связка PHP + Apache

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем рубрику Веб-программирование и ее раздел PHP. В данной записи мы установим PHP как модуль сервера Apache на компьютер под управлением Windows 10. Отмечу сразу, что инструкция по установки серверной связки PHP 5.6 + Apache 2.4 подойдет всем пользователям, у которых установлена Windows 7 и выше, к сожалению, на Windows XP и Vista эта инструкция не сработает. Также хочу сказать, что данную запись не стоит рассматривать только как инструкцию по установки PHP + Apache на Windows.

Установка PHP как модуль сервера Apache. Инструкция по установке Apache 2.4 + PHP 5.6 на Windows. Серверная связка PHP + Apache

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

Серверная связка PHP + Apache: как работают серверные технологии

Перед тем, как начать установку сервера Apache 2.4 + PHP5.6 на компьютер под управлением Windows 10, давайте немного поговорим о том, как работают серверные технологии и конкретно наша связка PHP + Apache. Начнем мы немного издалека и дойдем до нашей связки.

Первое и самое главное: любой сайт для конечного пользователя или посетителя в браузере представляет собой HTML страницу, которую создает браузер, анализируя HTML документ и ее структуру. Посетитель сайта видит HTML элементы на странице, которые получаются путем интерпретации HTML тэгов и HTML атрибутов браузером. Сайты в принципе могут быть статическими, а все логика и интерактивность может быть заключена в HTML ссылках, которые будут помогать посетителям передвигаться по сайтам.

Для работы статических сайтов не нужен никакой сервер, ведь HTML документы мы можем просматривать локально, так как браузеры могут спокойно работать с файловой системой компьютера, но такой подход, при котором сайты статические недостаточно гибок и не предоставляет нам интерактивных возможностей взаимодействия с посетителями сайта. Гораздо интереснее, когда на сайте может происходить взаимодействие с пользователем, то есть когда сайт является динамическим.

Для такого сайта нужен целый набор различных технологий, начиная с базы данных, управление которой происходит при помощи СУБД (например, сервер MySQL, библиотека SQLite или PostgreSQL) и заканчивая различными языками программирования, например, язык PHP – является серверным языком и при помощи него реализуются различные серверные возможности. А язык JavaScript – создает интерактивность на стороне клиента.

В данной публикации наибольший интерес для нас представляют серверные технологии и непосредственно связка PHP + Apache. Стоит отметить, что динамические сайты реализуются намного сложнее, чем статические, во-первых, из-за наличия целого стека технологий. Во-вторых, динамические сайты уже подразумевают деление функционала и ролей на клиентские и серверные. То есть в основе динамических сайтов лежит архитектура взаимодействия клиент-сервер.

В данном случае в качестве клиентского приложения выступает браузер, а в качестве серверного приложения выступает связка Apache + PHP (на самом деле эта связка может быть расширена другими приложениями и технологиями). Если смотреть на сеть Интернет глазами веб-мастера или веб-разработчика, то взаимодействие в Интернете происходит по протоколу HTTP (который находится на седьмом уровне сетевой модели OSI), реализует это взаимодействие как раз-таки сервер Apache (мы уже рассматривали установку Apache 2.4 на Windows). Язык PHP в данном случае мы можем рассматривать, как средство, которое позволяет выполнять две базовые вещи:

  1. Управлять взаимодействием по протоколу HTTP.
  2. Обращаться к базе данных для того, чтобы добавлять данные в таблицы базы данных, при этом не важно кто эти данные добавляет: посетитель сайта, оставляя на нем комментарий, или администратор сайта, публикующий очередную статью. Или опять же обращаться к базе данных для выборки данных из базы данных или удаления данных из таблиц базы данных.

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

Общая схема взаимодействия посетителя с динамическим веб-сайтом

Теперь немного поговорим о взаимодействие по протоколу HTTP и работе динамических сайтов. Отметим, что ни в один браузер в мире не встроен интерпретатор PHP кода, поэтому браузер не может его исполнять, в отличии от кода JavaScript. Весь PHP код выполняется на сервере, а браузер лишь получает результаты его работы. Этот процесс можно описать довольно просто следующим образом:

  1. Мы знаем, что обмен данными по протоколу HTTP происходит при помощи HTTP сообщения, их структура строго описана в стандарте HTTP.
  2. Перед тем, как начать обмениваться информацией браузер и сервер Apache устанавливают постоянное HTTP соединение, для которого используется TCP порт 80 или его псевдоним 8080.
  3. После установки соединения происходит обсуждения содержимого HTTP сообщений. В процессе обсуждения браузер и сервер договариваются о том, в каком виде они будут обмениваться информацией при помощи служебных полей HTTP заголовка.
  4. Сообщения, которые посылает браузер серверу получили название HTTP запросы клиента. Особенность запросов заключается в том, что такие сообщения содержат HTTP методы, которые позволяют понять серверу, что от него хочет браузер.
  5. Сообщения, отправляемые сервером, получили название HTTP ответы сервера, их особенность заключается в том, что они содержат специальные коды состояния, которые помогают понять браузеру то как его понял сервер Apache. В HTTP выделяют пять классов состояния: успешные коды состояния, которые начинаются с двойки; информационные коды состояния (все они начинаются с единицы); коды перенаправления, которые начинаются с тройки; коды ошибок клиента, они начинаются с четверки и коды ошибок сервера, которые начинаются с пятерки. Вообще, любой код состояния состоит из трех цифр, а его класс определяется первой цифрой.
  6. Обратим внимание, что процесс обмена сообщениями последователен, то есть сперва браузер посылает запрос серверу Apache или в общем случае HTTP серверу, а затем сервер посылает ответ. Таким образом происходит разделение функций: браузер отвечает за отображения информации посетителю сайта, а сервер отвечает за обработку этой информации и ее хранение.

Простейшая схема взаимодействия веб-клиента с сервером HTTP показана на рисунке ниже.

Простейшая схема взаимодействия веб-клиента с сервером HTTP

Обратим внимание, что процесс взаимодействия между браузером может быть локальным: в этом случае сервер Apache, PHP и другие серверные технологии установлены на одну и ту же машину, что и браузер или клиент. Таким образом можно разработать, настроить и протестировать сайт перед тем, как будет куплено доменное имя сайта и арендован хостинг, то есть перед тем, как он появится в сети Интернет.

Для некоторых пользователей установка связки PHP + Apache может показаться довольно утомительной и нудной, поэтому специально для таких людей были созданы готовые серверные сборки, в качестве примера можно привести локальный сервер AMPPS или сборку Денвер. Они вполне удобны и на 100% удовлетворят потребности новичков в мире веб-разработки, а также потребности 70-80% разработчиков. Для тех, кто хочет понять как работают серверные технологии и детально разобраться с работой веб-серверов рекомендуется ручная сборка веб-сервера, при которой мы можем самостоятельно, в процессе установки, настроить сборку под свои специфичные нужды. В данной же публикации мы будем устанавливать связку Apache 2.4 + PHP 5.6 на Windows и при этом PHP будет работать, как модуль сервера Apache.

Ранее мы уже разобрались с вопросами что такое PHP и что такое Apache, теперь нам стоит немного поговорить о том, что такое модуль сервера Apache и в чем его особенности, так как отдельной публикации пока нет, об этом мы поговорим в следующем разделе данной публикации, а затем составим инструкцию по установки Apache + PHP на Windows.

Что представляет собой модуль сервера Apache в Windows

Когда мы рассматривали процесс установки PHP на Windows без Apache с использованием встроенного веб-сервера, то говорили, что PHP в связки Apache может работать как его модуль, а можно сделать так, чтобы PHP работал как обработчик CGI. В первом случае PHP является частью архитектуры сервера Apache и поток PHP (в случае с Windows) работает параллельно с потоками других модулей сервера Apache.

Чтобы детально разобраться с тем, что собой представляет модуль в Apache и в чем будет заключаться особенность установки PHP как модуль сервера Apache, давайте немного разберемся с архитектурой веб-сервера Apache, для начала отметим, что Apache состоит из нескольких частей:

  1. Первая часть – это ядро сервера Apache, которая выполняет основные функции веб-сервера, реализует взаимодействие по протоколу HTTP и осуществляет обработку запросов.
  2. Вторая часть является конфигурационной, она представляет собой текстовые файлы, при помощи которых происходит настройка сервера Apache. Конфигурация сервера Apache осуществляется в файле httpd.conf. Для конфигурации виртуального хоста Apache служит файл extra/httpd-vhosts.conf. Для конфигурации отдельных директорий Apache используется файл .htaccess.
  3. Третий уровень архитектуры Apache является платформозависимым и реализует мультипроцессорные модели. Мультипроцессорные модели Apache очень хорошо развиты для операционных систем семейства UNIX.
  4. Четвертый уровень архитектуры Apache представляет собой модули для данного сервера. Модули сервера Apache разрабатываются как сторонними разработчиками, так и компанией Apache Software Foundation. На данный момент насчитывается более 500 модулей для сервера Apache, которые существенно расширяют возможности ядра.
  5. И наконец пятый уровень представляет собой механизм виртуальных хостов в Apache, благодаря которому хостинги стали доступными для обычных пользователей сети Интернет.

Рисунок ниже схематично демонстрирует модульную архитектуру сервера Apache.

Модульная архитектура сервера Apache

Итак, мы собрались устанавливать PHP, как модуль сервера Apache, следовательно, в данном случае PHP и Apache можно рассматривать как единое целое, грубо говоря, одно многофункциональное приложение, так как PHP будет как бы встроен в архитектуру Apache, каждый модуль Apache при выполнении своих функций создает поток, а PHP будет лишь одни из потоков сервера Apache.

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

Особенность установки Apache + PHP на Windows заключается в модуле MPM, который появился тогда, когда была разработана версия Apache для операционных систем семейства Windows. Этот модуль реализует мультипроцессорные модели и управляет взаимодействием ядра сервера с операционной системой и другими модулями. Модуль MPM имеет две модели: Worker и Prefork. Первая модель thread safe, вторая модель non-threaded, а как вы помните мы скачивали PHP версии Thread Safe.

Инструкция по установке PHP 5.6 + Apache 2.4 на Windows 10

Мы детально разобрались с техническими тонкостями, теперь давайте составим небольшую инструкцию по установке Apache 5.6 + Apache 2.4 на Windows, естественно, устанавливать PHP мы будем как модуль сервера Apache. Также заметим, что во многих книгах и на многих сайтах авторы усердно копируют друг друга и говорят: сначала мы должны установить сервер Apache, настроить его, а только потом устанавливать PHP, а только после PHP мы можем устанавливать и конфигурировать сервер MySQL.

Все это чушь, все эти три приложения независимы друг от друга и прекрасно могут работать по отдельности. Другое дело, что мы не сможем заставить работать PHP, как модуль сервера Apache, собственно, без самого Apache, но нам ведь никто не мешает установить и настроить PHP, а затем установить Apache и связать их вместе.

Для установки связки PHP + Apache нам потребуется редактор, хорошо если редактор будет удобным и многофункциональным, мы можем порекомендовать вам выбрать один из четырех редакторов, все они кроссплатформенные, имеют подсветку синтаксиса, очень активное сообщество и множество поклонников по всему миру:

  1. HTML редактор Notepad++ — очень удобный и бесплатный редактор для веб-разработчика, имеет функцию удаленного доступа к серверу по FTP протоколу.
  2. CSS редактор Brackets – прекрасный инструмент для верстальщика, разработанный компанией Adobe, что удивительно, Brackets бесплатный, он в первую очередь ориентирован на фронт-энд разработку.
  3. JavaScript редактор Sublime Text 3 – единственный минус этого редактора заключается в том, что он платный. То, что Sublime Text 3 это JavaScript редактор – сугубо личное мнение автора, основанное на огромном количестве модулей, упрощающих разработку на JavaScript.
  4. Интегрированная среда разработки NetBeans в редакции PHP. Среда NetBeans была разработана на Java для Java программистов, но из-за того, что данная среда оказалась удобной, многофункционально и в то же самое время простой в освоении, она получила несколько редакций для направлений отличных от Java.

Ранее мы уже рассматривали процесс установки Apache 2.4 на Windows 10, в котором мы разобрались с тем откуда скачать Apache и с тонкостями его установки на Windows. Также мы уже говорили о том, как установить PHP на Windows без Apache: здесь мы разобрались с особенностями версий PHP, выбрали версию, которую необходимо скачать, чтобы эта версия работала в Windows и, собственно, установили PHP.

Теперь давайте установим связку Apache + PHP по инструкции ниже и сделаем так, чтобы PHP работал как модуль Apache:

  1. Первое, что нам необходимо сделать – скачать PHP и скачать Apache. О том где и как это сделать мы писали ранее в соответствующих инструкциях, поэтому повторяться не будем.
  2. Второе, мы собираемся устанавливать связку PHP и Apache на Windows, при этом PHP должен быть установлен как модуль Apache. Другими словами, получится единая серверная технология и этих два приложения условно можно будет рассматривать как одно целое. Поэтому для удобства администрирования и поддержания работоспособности сервера логично будет продумать единую файловую архитектуру, мы это сделали уже ранее, когда устанавливали Apache на Windows.

Папки для серверной связки PHP + Apache

  1. Обратите внимание на структуру папок общий каталог называется сервер и расположен он у нас в корне диска C (вы можете выбрать любое удобное для вас место). В папку php нам следует распаковать архив, полученный с официального сайта PHP.

Руководство по PHP

Руководство по PHP

PHP, что означает «PHP: Препроцессор Гипертекста», является широко используемым языком сценариев общего назначения с открытым исходным кодом. PHP создавался специально для ведения Web-разработок и может использоваться непосредственно в HTML-коде. Синтаксис языка берет начало из C, Java и Perl и является легким для изучения. Преимущественным назначением PHP является предоставление web-разработчикам возможности быстрого создания динамически генерируемых web-страниц, однако, область применения PHP не ограничивается только этим.
Это руководство состоит, главным образом, из справочника функций, а также содержит справочник языка, комментарии к наиболее важным из отличительных особенностей PHP, и другие дополнительные сведения.
Авторы: Stig Sæther Bakken, Alexander Aulbach, Egon Schmid, Jim Winstead, Lars Torben Wilson, Rasmus Lerdorf, Andrei Zmievski, Jouni Ahto

Содержание

Предисловие
I. Приступая к работе
1. Введение
2. Краткое руководство
3. Установка
4. Конфигурация
II. Справочник языка
5. Основы синтаксиса
6. Типы
7. Переменные
8. Константы
9. Выражения
10. Operators
11. Control Structures
12. Functions
13. Classes and Objects
14. References Explained
III. Безопасность
15. Безопасность
IV. Отличительные особенности
16. HTTP authentication with PHP
17. Cookies
18. Handling file uploads
19. Работа с удаленными файлами
20. Connection handling
21. Persistent Database Connections
22. Safe Mode
23. Использование PHP в командной строке
V. Справочник функций
I. Функции для работы с сервером Apache
II. Функции для работы с массивами
III. Aspell functions [deprecated]
IV. BCMath Arbitrary Precision Mathematics Functions
V. Функции сжатия Bzip2
VI. Calendar Functions
VII. CCVS API Functions [deprecated]
VIII. COM support functions for Windows
IX. Class/Object Functions
X. ClibPDF Functions
XI. Crack Functions
XII. Функции CURL, Client URL Library
XIII. Cybercash Payment Functions
XIV. Cyrus IMAP administration Functions
XV. Функции определения типа символов
XVI. Database (dbm-style) Abstraction Layer Functions
XVII. Функции для работы с датой и временем
XVIII. dBase Functions
XIX. DBM Functions [deprecated]
XX. dbx Functions
XXI. DB++ Functions
XXII. Direct IO Functions
XXIII. Функции для работы с каталогами
XXIV. DOM XML Functions
XXV. .NET Functions
XXVI. Error Handling and Logging Functions
XXVII. File Alteration Monitor Functions
XXVIII. FrontBase Functions
XXIX. filePro Functions
XXX. Функции для работы с файловой системой
XXXI. Forms Data Format Functions
XXXII. FriBiDi Functions
XXXIII. FTP Functions
XXXIV. Function Handling Functions
XXXV. Gettext
XXXVI. GMP Functions
XXXVII. Функции протокола HTTP
XXXVIII. Hyperwave Functions
XXXIX. Hyperwave API Functions
XL. iconv Functions
XLI. Image Functions
XLII. IMAP, POP3 and NNTP Functions
XLIII. Informix Functions
XLIV. InterBase Functions
XLV. Ingres II Functions
XLVI. IRC Gateway Functions
XLVII. PHP / Java Integration
XLVIII. LDAP Functions
XLIX. LZF Functions
L. Mail Functions
LI. mailparse Functions
LII. Mathematical Functions
LIII. Multibyte String Functions
LIV. MCAL Functions
LV. Mcrypt Encryption Functions
LVI. MCVE Payment Functions
LVII. Mhash Functions
LVIII. Mimetype Functions
LIX. Microsoft SQL Server Functions
LX. Ming functions for Flash
LXI. Miscellaneous Functions
LXII. mnoGoSearch Functions
LXIII. mSQL Functions
LXIV. Функции СУБД MySQL
LXV. Improved MySQL Extension
LXVI. Mohawk Software Session Handler Functions
LXVII. muscat Functions
LXVIII. Network Functions
LXIX. Ncurses Terminal Screen Control Functions
LXX. Lotus Notes Functions
LXXI. NSAPI-specific Functions
LXXII. Unified ODBC Functions
LXXIII. Object Aggregation/Composition Functions
LXXIV. Функции для работы с Oracle
LXXV. OpenSSL Functions
LXXVI. Oracle Functions
LXXVII. Ovrimos SQL Functions
LXXVIII. Output Control Functions
LXXIX. Object property and method call overloading
LXXX. PDF functions
LXXXI. Verisign Payflow Pro Functions
LXXXII. PHP Options&Information
LXXXIII. POSIX Functions
LXXXIV. PostgreSQL Functions
LXXXV. Process Control Functions
LXXXVI. Program Execution Functions
LXXXVII. Printer Functions
LXXXVIII. Pspell Functions
LXXXIX. GNU Readline
XC. GNU Recode Functions
XCI. Функции для работы с регулярными выражениями (Perl-совместимые)
XCII. qtdom Functions
XCIII. Regular Expression Functions (POSIX Extended)
XCIV. Semaphore, Shared Memory and IPC Functions
XCV. SESAM Database Functions
XCVI. Session Handling Functions
XCVII. Shared Memory Functions
XCVIII. SimpleXML functions
XCIX. SOAP Functions
C. SQLite
CI. Shockwave Flash Functions
CII. SNMP Functions
CIII. Socket Functions
CIV. Standard PHP Library (SPL) Functions
CV. Stream Functions
CVI. Функции обработки строк
CVII. Sybase Functions
CVIII. TCP Wrappers Functions
CIX. Tidy Functions
CX. Tokenizer Functions
CXI. URL Functions
CXII. Variable Functions
CXIII. vpopmail Functions
CXIV. W32api Functions
CXV. WDDX Functions
CXVI. XML Parser Functions
CXVII. XML-RPC Functions
CXVIII. xdiff Functions
CXIX. XSL functions
CXX. XSLT Functions
CXXI. YAZ Functions
CXXII. YP/NIS Functions
CXXIII. Zip File Functions (Read Only Access)
CXXIV. Zlib Compression Functions
VI. Zend API
24. Overview
25. Extension Possibilities
26. Source Layout
27. PHP’s Automatic Build System
28. Creating Extensions
29. Using Extensions
30. Troubleshooting
31. Source Discussion
32. Accepting Arguments
33. Creating Variables
34. Duplicating Variable Contents: The Copy Constructor
35. Returning Values
36. Printing Information
37. Startup and Shutdown Functions
38. Calling User Functions
39. Initialization File Support
40. Where to Go from Here
41. Reference: Some Configuration Macros
42. API Macros
VII. PHP API: интерфейс программирования для написания расширений
43. Streams API for PHP Extension Authors
VIII. ЧАВО: ЧАсто задаваемые Вопросы и Ответы на них
44. General Information
45. Mailing lists
46. Obtaining PHP
47. Database issues
48. Installation
49. Build Problems
50. Using PHP
51. PHP and HTML
52. PHP and COM
53. PHP and other languages
54. Migrating from PHP 2 to PHP 3
55. Migrating from PHP 3 to PHP 4
56. Miscellaneous Questions
IX. Приложения
A. История PHP и смежных проектов
B. Migrating from PHP 4 to PHP 5
C. Migrating from PHP 3 to PHP 4
D. Migrating from PHP/FI 2 to PHP 3
E. Отладка PHP
F. Extending PHP 3
G. Список псевдонимов функций
H. List of Reserved Words
I. List of Resource Types
J. List of Supported Protocols/Wrappers
K. List of Available Filters
L. Список поддерживаемых транспортных протоколов
M. Таблица сравнения типов в PHP
N. List of Parser Tokens
O. Об этом руководстве
P. Open Publication License
Q. Список функций
R. Что отсутствует в этом руководстве
X. Руководство в формате HTML Help
57. About This Edition
58. Using PHP Manual CHM Edition
59. The Full Text Search
60. Specialities of this Edition
61. Integrating the PHP Manual
62. Skin development
63. CHM Edition Credits

Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Руководство по PHP — fileskachat.com, быстрое и бесплатное скачивание.

Скачать chm
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России. Купить эту книгу

30+ лучших приемов PHP для начинающих

Дата публикации: 2010-04-14

От Автора: PHP – самый широко используемый в Сети язык программирования. Представляем тридцать с небольшим лучших приемов для новичков, желающих приобрести основные навыки — php для начинающих.

1. Подружитесь со справочником по PHP

Если вы новичок в PHP, значит, пришло время познакомиться с внушающим почтение справочником PHP. Справочник по PHP невероятно исчерпывающий и содержит действительно полезные комментарии к каждой статье. Перед тем, как задавать вопросы или пытаться самостоятельно разрешить проблему, сэкономьте время и просто возьмите курс на справочник. Ответы на ваши вопросы уже удобно разместились в полезной статье на сайте PHP.net.
В данном случае мы Вам рекомендуем поискать самостоятельно справочники на русском языке, лучше php для начинающих. Будем рады, если Вы дадите ссылке на полезные справочники в комментариях к статье (Просто учитывайте, что это перевод статьи).

2. Включите отчет об ошибках

Отчет об ошибках в PHP очень полезен. Вы обнаружите ошибки в своем коде, которых не замечали ранее, однако не все они препятствуют работе приложения. Есть разные уровни детализации отчета, которые можно использовать, но E_ALL будет одинаково представлять вам все ошибки, критические ситуации и предупреждения.

Когда ваше приложение готово к продуктивной эксплуатации, придется выключить отчет об ошибках, иначе ваши посетители будут видеть странные сообщения, в которых ничего не поймут.

3. Попробуйте IDE

IDE (Integrated Development Environments/интегрированные среды разработки) – полезные инструменты для любого разработчика. Хотя они подойдут не для каждого, IDE определенно имеют свое значение. IDE обеспечивают такие инструменты, как:

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

Code completion (подсказки идентификаторов в редакторе кода)

Предупреждения об ошибках

Рефакторинг кода (переделка кода)

А также большое количество других возможностей. Существует множество отличных IDE, поддерживающих PHP.

4. Попробуйте PHP-frameworks

Вы можете многое узнать о PHP, просто экспериментируя с PHP-фреймворками. Такие фреймворки, как CakePHP или CodeIgniter, позволяют быстро создавать приложения PHP, даже если вы в нем не эксперт. В каком-то смысле они – дополнительные подпорки, которые показывают вам, каким образом должно выглядеть приложение PHP, и демонстрируют полезные концепции программирования (вроде отделения логики от дизайна и т.д.).

Возражение: лично я не советую новичкам пользоваться фреймворками. Сначала выучите основы.

5. Научитесь DRY

DRY – аббревиатура от Don’t Repeat Yourself, (Не Повторяйтесь), и это – полезная концепция программирования, без разницы на каком языке. DRY-программирование, как предполагается названием, гарантирует, что вы не пишете избыточного кода. Вот пример от Reinhold Weber:

теперь применением к нему подход DRY:

Более подробно о концепции DRY можно прочесть здесь и здесь.

6. Делайте отступы и используйте пробелы в коде для читаемости

Если вы не используете отступы и пробелы в коде, то результат выглядит, как картина Джексона Поллака (Jackson Pollack). Обеспечьте читаемость своего кода и нормальный поиск, потому что почти наверняка в будущем вы будете делать в нем изменения. IDE и современные текстовые редакторы могут автоматически делать отступы в коде.

7. Делайте код многоуровневым

Разделение на уровни ваших приложений – это ничто иное, как разделение различных компонентов кода на части. В будущем это даст вам возможность легко изменять код.

8. Всегда используйте

Часто программисты пытаются использовать сокращения в операторах PHP. Вот как это обычно делается:

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

9. Используйте содержательные, последовательные названия

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

10. Комментируйте, комментируйте, комментируйте

Кроме использования пробелов и отступов для разделения кода, вам также придется использовать встроенные комментарии, чтобы снабжать примечаниями свой код. Позже вы поблагодарите сами себя, когда придется возвращаться и искать что-либо в коде, или если вы просто не помните того, что делала определенная функция. Это также полезно для тех, кому нужно просмотреть ваш код.

11. Установите MAMP/WAMP

MySQL — самый популярный вид базы данных, используемый с PHP (хотя и не единственный). Если нужно настроить локальное окружение для разработки и тестирования ваших PHP-приложений на компьютере, предусмотрите установку MAMP (Mac) или WAMP (Windows). Установка MySQL на ваш собственный компьютер может стать утомительным процессом, а оба этих программных пакета содержат MySQL. Ловко и просто.

12. Установите лимиты своим скриптам

Установка лимита времени на PHP-скрипты – очень ответственная вещь. Бывают моменты, когда скрипты выходят из строя, и когда это произойдет, вам придется использовать свойство set_time_limit (установить лимит времени), чтобы избежать бесконечно повторяющихся циклов и истечения таймаутов времени соединения с базой данных. Set_time_limit устанавливает лимит времени на максимальное количество секунд, за которое выполняется скрипт (по умолчанию 30). По истечении этого времени возбуждается неустранимая ошибка.

13. Используйте объекты (или ООП)

Объектно-ориентированное программирование (ООП) использует объекты, чтобы представлять компоненты приложения. ООП – это не только способ разбить свой код на отдельные логические секции, оно также снижает количество повторений кода и делает намного более легким его модифицирование в будущем.

14. Поймите разницу между одинарными и двойными кавычками

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

Возражение: Собственно, это не обязательно верно. Тесты Benchmark показывают, что при тестировании строк без переменных существуют определенные преимущества быстродействия при использовании двойных кавычек.

15. Не ставьте phpinfo() в свой Webroot

Phpinfo – чудесная вещь. Просто создав PHP-файл, в котором есть:

Добро пожаловать

В интернете очень много устаревшей информации, которая приводит к заблуждению, распространению неверных решений и написанию плохого кода у начинающих PHP-разработчиков. Это нужно остановить. PHP: Правильный Путь — легкочитаемое руководство для быстрого ознакомления с правилами эффективного использования PHP, принятыми стандартами написания кода и ссылками на признанные руководства по всему интернету.

Переводы

Руководство PHP: Правильный путь уже (или вскоре будет) переведено на множество различных языков:

Дисклеймер

В интернете не существует описания каноничного способа использования PHP. Как бы то ни было, этот скромный сайт содержит лучшие решения, доступные варианты и другую полезную информацию. Он направлен на ознакомление начинающих разработчиков с PHP и переосмысление опытными профессионалами свежих идей.

Это живой документ и он продолжит обновляться более полезной информацией и примерами по мере их появления.

Как внести вклад

Помогите сделать этот сайт лучшим ресурсом для начинающих PHP программистов! Помочь используя GitHub

Расскажите о нас

Руководство PHP: Правильный путь содержит веб-баннеры, которые вы можете использовать на своём сайте. Окажите поддержку, показав начинающим PHP-разработчикам где они могут найти полезную информацию!

Начало

Использование стабильной версии (7.2)

Если вы только начинаете работу с PHP, убедитесь в том, что вы используете текущую стабильную версию PHP 7.2. За последние несколько лет PHP добился больших успехов, добавив новые возможности.

Наиболее часто в ближайшем будущем вы будете видеть, что используются версии PHP 5.x, с последней 5.6. Но вы должны попробовать использовать последнюю стабильную версию, если это возможно. Не дайте скромной разнице между числами 5.2 и 5.6 ввести вас в заблуждение, эта разница представляет важные изменения. Если вам нужна функция или пример её использования, вы всегда можете найти документацию на php.net.

Встроенный веб-сервер

Вы можете начать изучение PHP без необходимости в установке и конфигурировании полноценного веб-сервера (необходим PHP 5.4 или новее). Для запуска сервера вам необходимо выполнить следующую команду из терминала в корневой папке веб-проекта:

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

OSX поставляется с предзапакованным PHP, но, в лучшем случае, он немного отстает от стабильной версии. Lion поставляется с PHP 5.3.6 и Mountain Lion имеет 5.3.10.

Для обновления PHP в OSX вы можете установить его с помощью нескольких пакетных менеджеров, наиболее рекомендуемый из которых php-osx by Liip.

Другой вариант, скомпилировать самостоятельно, в этом случае убедитесь, что у вас установлен либо Xcode, либо его аналог от Apple “CLI для Xcode”, который можно загрузить с Apple Mac Developer Center.

В качестве полного набора «всё-в-одном», который включает PHP, веб-сервер Apache и СУБД MySQL, и всё это с хорошим управлением через GUI, попробуйте MAMP.

Установка в Windows

PHP для Windows можно получить несколькими путями. Вы можете загрузить установочные файлы и, до недавнего времени, вы могли использовать ‘.msi’ установщик. Начиная с PHP версии 5.3.0 установщик не поддерживается.

Для изучения и локальной разработки вы можете использовать встроенный в PHP 5.4+ веб-сервер, о конфигурации которого можно не беспокоиться. Если вы предпочитаете сервера «всё-в-одном», которые включают в себя полноценный веб-сервер и MySQL, тогда можете воспользоваться такими инструментами, как Web Platform Installer, Zend Server CE, XAMPP или WAMP, которые помогут быстро развернуть окружение для разработки в Windows. Но, стоит сказать, что эти инструменты будут отличаться от продакшна, так что будьте осторожны и учитывайте эти различия, если вы работаете на Windows и деплоите на Linux.

Если вам нужно запустить конечную систему на Windows, то IIS7 даст вам лучшую стабильность и производительность. Вы можете использовать phpmanager (плагин для IIS7) для легкого конфигурирования и управления PHP. IIS7 поставляется с встроенным FastCGI, вам нужно просто настроить PHP в качестве обработчика. Для получения помощи и дополнительной информации посетите iis.net.

Vagrant

Запуск вашего приложения в разных окружениях на этапе разработки и продакшна может привести к различным багам, которые дадут о себе знать уже непосредственно при работе приложения. Также сложно поддерживать в разных окружениях стабильные версии для всех библиотек, которые используются при работе в команде разработчиков.

Если вы разрабатываете на Windows и деплоите на Linux (или что-либо отличающееся от Windows) или разрабатываете в команде, вы должны рассмотреть возможность использования виртуальной машины. Это звучит сложно, но, используя Vagrant, вы можете установить простую виртуальную машину всего лишь в несколько шагов. Они могут быть как выполнены вручную, так и с помощью специализированного софта, например, Puppet или Chef, который автоматизирует эту задачу. Использование этого софта гарантирует использование одинаковой конфигурации для нескольких машин, что избавляет вас от необходимости поддержки сложных списков установки. Вы также можете удалить вашу машину, и пересоздать её без большого количества ручных шагов, что делает создание «свежей» виртуалки очень простым.

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

Стандарты написания кода

Сообщество PHP является очень большим и разнообразным, сочетая в себе бесчисленное количество библиотек, фреймворков, и различных компонентов. Для PHP разработчика это обычная практика — выбрать несколько из них и соединить в одном проекте. Очень важно придерживаться общих стандартов написания кода (так точно, насколько это возможно) в своём PHP коде, чтобы позволить разработчикам сочетать и использовать различные библиотеки для своих проектов.

Группа Совместимости Фреймворков предложила и одобрила ряд стилевых рекомендаций, известных как PSR-0, PSR-1 и PSR-2. Не дайте веселым именам смутить вас, эти рекомендации представляют собой набор правил, которых начинают придерживаться такие проекты, как Drupal, Zend, Symfony, CakePHP, phpBB, AWS SDK, FuelPHP, Lithium и другие. Вы можете использовать их при работе над собственным проектом, или в дальнейшем использовать ваш собственный стиль.

В идеале, вы должны писать PHP код, придерживаясь известных стандартов. Это может быть любая комбинация PSR-ов, или один из стандартов кода, сделанных PEAR или Zend. Это позволит другим разработчикам легко читать и работать с вашим кодом, и приложения, которые используют компоненты, смогут сохранить структуру приложения, даже работая с огромным количеством стороннего кода.

Вы можете использовать PHP_CodeSniffer чтобы проверить код на соответствие одной из этих рекомендаций, а также плагин для текстовых редакторов, таких как, к примеру, Sublime Text 2 чтобы получить отчёт в реальном времени.

Используйте PHP Coding Standards Fixer, созданный Фабиеном Потенсьером, для автоматического исправления синтаксиса вашего кода так, чтобы он соответствовал этим стандартам, что спасет вас от исправления каждой проблемы вручную.

Английский язык является наиболее предпочтительным для всех символических имен и инфраструктуры кода. Комментарии могут быть написаны на любом языке, который будет легко читаем текущими и будущими разработчиками, которым предстоит работать над кодом.

Основные моменты языка

Парадигмы программирования

PHP представляет собой гибкий, динамичный язык, который поддерживает несколько техник программирования. Он значительно развился в течение последних нескольких лет: добавлена мощная объектно-ориентированная модель в PHP 5.0 (2004), анонимные функции (замыкания) и пространства имен в PHP 5.3 (2009), а также трейты в PHP 5.4 (2012).

Объектно-ориентированное программирование

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

Функциональное программирование

PHP поддерживает первоклассные функции, т.е. функция может быть применена к переменной. И определенные пользователем, и встроенные функции могут быть применены к переменной и вызываться динамически. Функции могут быть переданы, как аргумент к другой функции (эта особенность называется функцией высшего порядка), а также функция может возвращать другую функцию.

Рекурсия — это особенность, которая позволяет функции вызывать саму себя, это поддерживается языком, но бо́льшая часть кода PHP фокусируется на итерации.

Анонимные функции (замыкания) поддерживаются PHP начиная с версии 5.3 (2009).

В PHP 5.4 добавлена возможность связывать замыкание с областью видимости объекта, а также улучшена поддержка callables (всё, что может быть вызвано), так что они могут быть использованы наравне с анонимными функциями практически во всех случаях.

Meta Programming

PHP поддерживает несколько форм метапрограммирования, что реализуется с помощью таких механизмов, как Reflection API и Магические Методы. Доступно много Магических Методов, например: __get() , __set() , __clone() , __toString() , __invoke() , и т.д., которые позволяют отслеживать поведение внутри класса. Разработчики Ruby часто говорят, что PHP не хватает method_missing , но он доступен, как __call() и __callStatic() .


Пространства имен

Как было сказано выше, сообщество PHP состоит из множества разработчиков, создающих очень много кода. Это значит, что одна библиотека PHP может иметь такое же название класса, как и другая. Когда обе библиотеки используются в одном пространстве имен, они конфликтуют и возникают проблемы.

Пространства имен решают эту проблему. Как описано в руководстве PHP, пространства имен можно сравнить с папками операционной системы, которые являются пространствами имен файлов; два файла с одинаковым именем могут сосуществовать в разных директориях. Подобно этому, два PHP класса с одинаковым названием могут существовать в разных пространствах имен PHP.

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

Один из рекомендуемых способов использования пространств имен описан в PSR-4, который призван обеспечить стандарты для описания файлов, классов и пространств имен, что позволяет создавать подключаемый (plug-and-play) код.

Стандартная Библиотека PHP (SPL)

Стандартная библиотека PHP (SPL) поставляется вместе с PHP и предоставляет набор классов и интерфейсов. Она состоит в основном из часто используемых классов структур данных (стек, очередь, куча, и т.д.), а также итераторов, которые предназначены для прохождения через эти структуры данных или ваши собственные классы, которые реализуют интерфейсы SPL.

Интерфейс командной строки

Главная цель, с которой был создан PHP — это разработка веб-приложений, но он также полезен при написания кода для интерфейса командной строки (CLI). PHP программы командной строки могут помочь вам автоматизировать такие общие задачи, как тестирование, развертывание и администрирование приложения.

CLI PHP программы очень мощные, потому что вы можете использовать код вашего приложения напрямую, без нужды в создании и обеспечении безопасности веб-интерфейса (GUI) для него. Только убедитесь, что вы не используете для ваших скриптов (CLI) корень вашего веб-сервера.

Попробуйте запустить PHP из консоли:

Опция -i выдаст вам конфигурацию вашего PHP, подобно функции phpinfo .

Опция -a предоставляет доступ к интерактивной оболочке, подобно ruby IRB или интерактивной оболочки python. Также существует целый ряд других полезных опций командной строки.

Давайте напишем простую «Привет, $name» программу CLI. Чтобы это сделать, создайте файл с именем hello.php , как показано ниже.

PHP устанавливает две специальные переменные, основанных на аргументах, с которыми запущен ваш скрипт. $argc — это переменная с числовым значением, которая содержит количество переданных аргументов, $argv — это массив, содержащий значение каждого аргумента. Первый аргумент — всегда название вашего PHP скрипта, в этом случае hello.php .

Выражение exit() используется с ненулевым числом, чтобы дать оболочке понять, что команда не удалась. Часто используемые коды завершения можно найти здесь

Для запуска сценария, указанного выше, наберите в командной строке:

XDebug

Один из самых полезных инструментов в разработке программного обеспечения — хороший отладчик. Он позволяет вам отследить исполнение вашего кода и контролировать содержимое вашего стека. XDebug — это PHP отладчик, который может использоваться различными IDE, чтобы дать вам возможность устанавливать Брейкпоинты (точки отладки кода) и контролировать стек. Он также позволяет использовать такие инструменты, как PHPUnit и KCacheGrind, для покрытия кода тестами и его профилирования.

Если вы оказываетесь в безвыходном положении при использовании var_dump/print_r, и у вас не получается найти решение, то возможно вам поможет использование отладчика.

Установка XDebug может оказаться сложной, но одна из самых полезных его функций это «Удаленная отладка» — если вы разрабатываете код локально и затем тестируете его в локальной машине или на другом сервере, Удаленная Отладка — это возможность, которую вы захотите сразу же включить.

Стандартно, вы отредактируете ваш Apache VHost или .htaccess файл со следующими значениями:

“remote_host” и “remote_port” будут указывать на ваш локальный компьютер и порт, который вы указали в вашей IDE для прослушивания. Дальше достаточно включить режим «ожидания соединений» в вашей IDE, и загрузить URL:

Ваша IDE теперь будет перехватывать текущее состояние, позволяя вам устанавливать брейкпоинты и исследовать значения в памяти по мере выполнения скрипта.

Менеджер зависимостей

Существует много библиотек, фреймворков и компонентов PHP на выбор. Ваш проект, скорее всего, будет использовать некоторые из них — это и есть зависимости проекта. До недавнего времени в PHP не существовало удобного способа для управления зависимостями проекта. Даже если вы управляете ими вручную, вам приходилось беспокоиться об автозагрузчиках. Больше это не требуется.

В настоящее время существует две основные системы управления пакетами для PHP — Composer и PEAR. Какая из них подходит именно вам? Ответ — обе.

  • Используйте Composer для управления зависимостями одного проекта.
  • Используйте PEAR для управления зависимостями всех проектов во всей вашей системе.

В общем, пакеты Composer будут доступны только в проектах, для которых вы явно укажете его использование, тогда как пакеты PEAR будут доступны во всех ваших PHP проектах. PEAR, на первый взгляд, может показаться более простым подходом, но есть преимущества в использовании подхода «проект-к-проекту» для зависимостей.

Composer и Packagist

Composer является блестящим менеджером зависимостей для PHP. Укажите список зависимостей вашего проекта в файле composer.json и, с помощью нескольких простых команд, Composer автоматически скачает зависимости вашего проекта и установит для вас автозагрузку.

На данный момент существует много PHP библиотек, которые совместимы с Composer, готовых для использования в вашем проекте. Список этих «пакетов» есть на Packagist, официальном репозитории для Composer-совместимых PHP библиотек.

Как установить Composer

Вы можете установить Composer локально (в вашей текущей рабочей директории; хотя это не рекомендуется) или глобально (например /usr/local/bin). Предположим, вы хотите установить Composer локально. Из корневой директории вашего проекта выполните:

Это позволит загрузить файл composer.phar (бинарный PHP-архив). Вы можете запустить его, используя php для управления зависимостями вашего проекта. Обратите внимание: Если вы скачаете код напрямую в ваш интерпретатор, пожалуйста, сперва прочитайте код онлайн, для подтверждения его безопасности.

Как установить Composer (вручную)

Ручная установка Composer — это продвинутая техника; однако, существуют причины, по которым разработчик может предпочесть именно этот метод использованию интерактивной установки. Интерактивная установка проверяет настройки PHP, чтобы подтвердить, что:

  • Используется необходимая версия PHP
  • Файлы .phar могут быть верно выполнены
  • Определенные права на каталог достаточны
  • Не установлены конфликтные расширения
  • Установлены необходимые настройки php.ini

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

Путь $HOME/local/bin (или другой каталог, выбранный вами) должен находиться в вашей переменной окружения $PATH . Это позволит быть доступной команде composer .

Если вы прочтете документацию Composer, которая гласит, что нужно запускать Composer с помощью команды php composer.phar install , вы можете заменить эту команду на:

Как объявить и установить зависимости

Composer продолжает следить за зависимостями вашего проекта в файле composer.json . Вы можете управлять им вручную, если вам нравится, или же использовать сам Composer. Команда php composer.phar require добавляет зависимость в проект и, если в каталоге нет файла composer.json , он будет создан. Далее мы рассмотрим пример, который добавляет Twig, как зависимость вашего проекта. Запустите это в корневой директории вашего проекта, куда вы загружали composer.phar :

Аналогично команда php composer.phar init проведет вас через создание полного файла composer.json для вашего проекта. Есть и другой путь, когда вы создадите файл composer.json вы можете сказать Composer, чтобы он скачал все ваши зависимости в папку vendors/ . Это также применимо для проектов, которые вы загрузили и которые предоставляют файл composer.json :

Затем добавьте этот код в основной PHP-файл вашего приложения; это укажет PHP использовать автозагрузчик Composer для зависимостей вашего проекта.

Теперь вы можете использовать зависимости вашего проекта и они будут автоматически загружаться (по требованию).

Обновление зависимостей

Composer создает файл composer.lock который хранит точную версию каждого пакета, который он загрузил во время первого запуска php composer.phar install . Если вы поделились проектом с другими разработчиками и файл composer.lock является частью него, то при запуске php composer.phar install они получат ту же версию, что и вы. Чтобы обновить ваши зависимости запустите php composer.phar update .

Очень удобно гибко указывать требуемые версии. Если вы нуждаетесь в версии

1.8, что значит “всё что новее 1.8.0, но меньше 2.0.x-dev”. Вы также можете использовать шаблон * , например 1.8.* . Теперь команда Composer php composer.phar update обновит все ваши зависимости до новейших версий, которые соответствуют указанным ограничениям.

Проверка ваших зависимостей на безопасность

Security Advisories Checker является веб-сервисом и инструментом командной строки, оба из которых изучают ваш файл composer.lock и сообщают, если есть необходимость в обновлении какой-либо из ваших зависимостей.

Другим ветераном среди пакетных менеджеров, которым наслаждаются многие PHP-разработчики, является PEAR. Он работает практически так же, как и Composer, но имеет несколько важных отличий.

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

PEAR устанавливает пакеты глобально, что означает то, что после установки, они доступны всем проектам на этом сервере. Это может быть полезно, если много проектов строятся на тех же пакетах с той же версией, но может привести к проблемам, если проекты разрабатывались для разных версий.

Как установить PEAR

Вы можете установить PEAR, загрузив установщик phar и выполнив его. Документация PEAR содержит подробную инструкцию по установке для каждой операционной системы.

Если вы используете Linux, вы также можете посмотреть наличие PEAR в пакетном менеджере вашего дистрибутива. Debian и Ubuntu, к примеру, содержат информацию о пакете php-pear в пакетном менеджере apt.

Как установить пакет

Если пакет существует в списке пакетов PEAR, вы можете установить его, указав официальное название:

Если пакет выложен на другом канале, вам нужно сначало сделать discover этого канала и затем указать его во время установки. Подробнее об этом в использование каналов.

Обработка зависимостей PEAR с Composer

Если вы уже используете Composer и желаете установить какой-то код из PEAR, вы можете использовать Composer для обработки зависимостей PEAR. Этот пример установит код из pear2.php.net :

Первый раздел «repositories» даст понять Composer, что он должен сделать “initialise” (или “discover” в терминологии PEAR) репозиторий pear. Затем секция require укажет именам пакетов префикс, как ниже:

Префикс “pear” жестко ограничен, чтобы избежать любых конфликтов, так как каналы Pear могут быть схожи с другими поставщиками пакетов например, вместо короткого имени (или полного URL) может быть использовано для объявления в каком канале находится пакет.

Когда код будет установлен он будет доступен в вашей папке vendor и автоматически доступен через автозагрузчик (файл Autoload) Composer.

Илон Маск рекомендует:  TrimRight - Функция Delphi

Чтобы использовать этот пакет PEAR просто объявите как ниже:

Практики написания кода

Основы

PHP — это обширный язык, который позволяет разработчикам всех уровней писать код не только быстро, но и эффективно. В любом случае, изучая язык, мы нередко забываем основы, которые мы изучали изначально (или бегло просмотрели), в пользу коротких путей и/или вредных привычек. Чтобы помочь в борьбе с этой общей проблемой, эта секция предназначена для напоминания разработчикам основ практик написания кода PHP.

Дата и время

PHP содержит встроенный класс DateTime, предназначенный для чтения, записи, сравнения и вычисления даты или времени. Также в PHP много функций, связанных с датой и временем, помимо класса DateTime, но класс предоставляет хороший объектно-ориентированный интерфейс для решения большинства задач. Он способен даже обрабатывать временные зоны, но это уже не рассматривается в данном коротком введении.

Для начала работы с DateTime, сконвертируйте «сырую» строку даты и времени в объект с помощью фабричного метода createFromFormat() или выполните new \DateTime , чтобы получить текущую дату и время. Используйте метод format() для конвертирования DateTime обратно в строку для вывода.

Вычисления с DateTime возможны с использованием класса DateInterval. У класса DateTime есть методы add() и sub() , которые принимают DateInterval, как аргумент. Не пишите код, который ожидает одинаковое число секунд каждый день, перевод часов и смена часовых поясов разрушат это предположение. Вместо этого используйте интервалы дат. Для расчета разницы между датами используйте метод diff() . Он вернет новый объект DateInterval, который очень легко отобразить.

С объектами DateTime, вы можете использовать стандартные методы сравнения:

И последний пример для демонстрации класса DatePeriod. Он используется для перебора повторяющихся событий. Класс может принимать два объекта DateTime, начало и конец, и интервал, для которого он вернет все события между ними.

Design Patterns

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

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

Исключения

Исключения — это неотъемлемая часть большинства популярных языков программирования, но зачастую PHP разработчики не уделяют им должного внимания. Языки, подобные Ruby, очень подробно обрабатывают исключения, поэтому, если что-то идёт не верно, например: не удался HTTP запрос, запрос к базе данных происходит неправильно или если запрошенное изображение не было найдено, Ruby (или используемые гемы) выбросит исключение на экран, помогающее понять где вы допустили ошибку.

PHP сам по себе довольно слаб в плане этого и вызов file_get_contents() , как правило, даст вам только FALSE и предупреждение. Многие устаревшие PHP-фреймворки, как CodeIgniter, просто вернут false, добавят сообщение в свой собственный журнал и, может быть, дадут вам использовать метод, как $this->upload->get_error() , чтобы посмотреть, что пошло не так. Проблема в том, что вы должны искать ошибку и проверять документацию, чтобы понять, какой ошибочный метод существует в этом классе, вместо того, чтобы сделать это всё более очевидным.

Еще одна проблема в том, что классы автоматически выдают ошибку на экран и закрывают процесс. Когда вы делаете это, вы не даете другому разработчику динамически обработать эту ошибку. Исключения должны быть выброшены, чтобы дать разработчику знать об ошибке и выбрать, как её обработать. Например:

Исключения SPL

Универсальный класс Exception предоставляет очень мало отладочного контекста для разработчика; как бы то ни было, для того чтобы исправить это, можно создать специализированный класс, который будет расширять возможности универсального класса Exception :

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

Например, если вы используете магический метод __call() и вами был вызван неизвестный метод, то вместо выбрасывания стандартного исключения, которое очень расплывчато, или вместо создания своего исключения, вы можете просто использовать throw new BadFunctionCallException; .

Базы данных

Скорее всего, ваш PHP код будет использовать базу данных для сохранения информации. Существует несколько вариантов для подключения и взаимодействия с базой данных. Рекомендуемым вариантом до PHP 5.1.0 было использование нативных (родных) драйверов, таких как mysql, mysqli, pgsql, etc.

Встроенные драйвера замечательны, если вы используете ОДНУ базу данных в ваших приложениях, но если, например, вы используете MySQL и немного MSSQL, или вам нужно подключиться в базе данных Oracle, тогда вы не сможете использовать те же драйвера. Вам нужно будет изучить новый API для каждой базы данных — и это может оказаться нерациональным.

Обратите внимание, что расширение mysql для PHP больше не поддерживается, и его официальным статусом, начиная с PHP версии 5.4.0, является «Устарело в связи с длительным сроком использования». Это значит, что оно будет удалено в течение нескольких следующих релизов, так что в PHP 5.6 (или в версиях, следующих за 5.5) оно вполне может пропасть. Если вы используете mysql_connect() и mysql_query() в своих приложениях, тогда вам придется столкнуться с переписыванием кода, поэтому лучшим вариантом сейчас является использование в приложениях mysqli или PDO вместо mysql, прежде чем вы в дальнейшем столкнётесь с нерабочими приложениями. Если вы начинаете изучение баз данных с нуля, тогда полностью откажитесь от использования расширения mysql — используйте Расширение MySQLi или PDO.

PDO — это абстрактная библиотека для подключения к базе данных, встроенная в PHP с версии 5.1.0, которая обеспечивает единый интерфейс для взаимодействия с большим количеством различных баз данных. PDO не будет переводить ваши SQL запросы или эмулировать отсутствующие возможности; он чист для подключения к нескольким типам баз данных с тем же API.

Более важно, что PDO позволяет вам безопасно вводить пользовательские данные (например идентификатор) в ваши SQL запросы, без беспокойства о SQL-инъекциях. Это возможно благодаря использованию PDO выражений и связывания (bound) параметров.

Предположим, что PHP скрипт получает числовой идентификатор в качестве параметра из запроса. Этот идентификатор должен быть использован для получения пользовательских записей из базы данных. Ниже приведён неправильный способ реализации этого:

Это ужасный код. Вы вставляете необработанные параметры в SQL запрос. Это приведёт к взлому. Просто представьте, что взломщик сделает запрос http://domain.com/? >, который присвоит переменной $_GET[‘id’] значение 1;DELETE FROM users и приведёт к удалению всех ваших пользователей! Вместо этого, вы должны очистить ввод идентификатора с помощью связывания параметров PDO.

Это правильный код. Он использует связанный параметр в выражении PDO. Это позволяет избежать ввода некоректного ID перед тем, как передать запрос в базу данных, тем самым предотвращая потенциальные SQL-инъекции.

Вы также должны понимать, если подключение не закрыто должным образом, то оно использует много ресурсов, которые тратятся впустую, впрочем это больше относится к другим языкам. Используя PDO, вы можете неявно закрывать подключение уничтожив объект — все ссылки на него будут удалены, т.е. установлены в NULL. Если не сделать этого явно, PHP закроет подключение за вас, когда выполнение скрипта завершится, если только вы не используете постоянные подключения.

Уровни абстракции

Многие фреймворки предоставляют собственный уровень абстракции, который может строиться на основе PDO. Такая фактическая абстракция баз данных позволяет оборачивать запросы на PHP в методы, которые отсутствуют в одной системе баз данных, но работают в другой. Это, конечно, добавит небольшие накладные расходы, но если вы строите портативные приложения, которым необходима работа с MySQL, PostgreSQL и SQLite, тогда, для чистоты кода, минимальными накладными расходами можно пренебречь.

Некоторые уровни абстракции построены с использованием PSR-0 стандарта, поэтому могут быть установлены в любое приложение:

Безопасность

Безопасность веб-приложений

Есть плохие люди, которые могут и хотят взломать ваши веб-приложения. Важно принять необходимые меры предосторожности, чтобы укрепить безопасность вашего приложения. К счастью, прекрасные люди в The Open Web Application Security Project (OWASP) составили полный список известных проблем безопасности и методов защиты от них. Это должно быть прочитано любым разработчиком, заботящимся о безопасности.

Хэширование паролей

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

Очень важно правильно хэшировать пароль перед его сохранением. Хэширование пароля является необратитым, односторонняя функция применяется на пользовательских паролях. Она возвращает строку определенной длины, которую невозможно расшифровать. Это значит, что вы можете сравнить один хэш с другим, чтобы понять, что они пришли из одной и той же исходной строки, но вы не можете определить оригинальную строку. Если ваши пароли не захэшированы, и доступ к базе данных получен третьй стороной, то ваши пользовательские аккаунты теперь скомпрометированы. Некоторые пользователи (к сожалению) могут использовать один и тот же пароль для разных сервисов. Как бы то ни было, очень важно серьезно относиться к безопасности.

Хэширование паролей с функцией password_hash

В PHP 5.5 была представлена функция password_hash . Сейчас она использует BCrypt, сильнейший алгоритм, поддерживаемый PHP. Она будет обновлена в будущем, для поддержки бОльшего числа алгоритмов, по мере необходимости. Библиотека password_compat была создана для обратной совместимости с PHP >= 5.3.7.

Ниже мы хэшируем строку и далее сверяем её с новой строкой. Поскольку наши две исходные строки отличаются (‘secret-password’ и ‘bad-password’) эта авторизация будет неудачной.

Фильтрация данных

Никогда не доверяйте пользовательскому вводу, который передаётся вашему PHP коду. Всегда проверяйте и очищайте пользовательский ввод перед его использованием в коде. Функции filter_var и filter_input помогут очистить переменные, а также проверить соответствие введённых данных некоторому формату (например, адрес электронной почты).

Пользовательский ввод может быть различным: $_GET и $_POST , данные введённые в форму, некоторые значения в суперглобальной переменной $_SERVER и тело HTTP запроса, открытое с помощью fopen(‘php://input’, ‘r’) . Запомните, что пользовательский ввод не ограничивается данными формы, отправленной пользователем. Отправляемые и загружаемые файлы, значения сессий, данные cookie и данные сторонних веб-сервисов также приравниваются к пользовательскому вводу.

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

Данные могут быть отфильтрованы по-разному, в зависимости от их назначения. Например, когда нефильтрованные данные, введённые пользоватем, передаются в HTML код страницы, он может выполнить HTML и JavaScript на вашем сайте! Этот тип атаки известен, как Cross-Site-Scripting (XSS) и может иметь очень серьёзные последствия. Один из способов избежать XSS заключается в очистке ввода от всех HTML тэгов (их удалением, или заменой на HTML символы) с помощью функции strip_tags или экранирование символов в равносильные им HTML сущности с функцией htmlentities или htmlspecialchars .

Другой пример, передача данных для выполнения командной строкой. Это может быть крайне опасно (и, как правило — это плохая идея), но вы можете использовать встроенную функцию escapeshellarg для очистки аргументов командной строки.

Последний пример, принимает пользовательский ввод, чтобы определить, какой файл загружать из файловой системы. Это может быть использовано для изменения имени файла на путь файла. Вам нужно убрать “/”, “../”, нулевые байты или другие символы из пути файла, так чтобы скрипт не мог загружать скрытые, непубличные или конфиденциальные файлы.

Санитизация

Санитизация удаляет (или экранирует) неправильные или небезопасные символы из пользовательского ввода.

Например, вам необходимо нормализовать пользовательский ввод перед подключением ввода в HTML или его вставкой в сырой SQL запрос. Когда вы используете связанные параметры с PDO, они будут очищать ввод за вас.

Иногда требуется разрешить некоторые безопасные HTML тэги в вводе, когда он подключается в HTML страницу. Это очень трудно сделать и многие избегают этого, используя ограниченное форматирование, как например Markdown или BBCode, либо библиотеки с белым списком, как HTML Purifier, существующие по этой причине.

Валидация

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

Конфигурационные файлы

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

  • Рекомендуется хранить вашу конфигурационную информацию там, где к ней не может быть получен доступ напрямую, а доступ к ней осуществлялся через файловую систему.
  • Если вы вынуждены хранить конфигурационные файлы в корневом каталоге, именуйте файл с расширением .php . Это гарантирует, что, если к скрипту обратятся напрямую, он не будет выведен, как обычный текст.
  • Информация в файлах конфигурации, должна быть защищена соответственно, либо с помощью шифрования или системных прав группы/пользователя файла.

Использование глобальных переменных

Примечание: С появлением PHP 5.4 директива register_globals была удалена и больше не может быть использована. Это касается тех, кому нужно обновить старое приложение.

Включенный параметр конфигурации register_globals делает несколько типов переменных (в том числе из $_POST , $_GET и $_REQUEST ) глобальными, доступными в глобальной области видимости вашего приложение. Это может легко привести к проблемам с безопасностью, поскольку ваше приложение не сможет эффективно определить откуда пришли данные.

Например : $_GET[‘foo’] будет доступна через $foo , которая может заместить переменную, которая не была объявлена. Если вы используете PHP register_globals off (выключена).

Сообщения об ошибках

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

Разработка

Для того, чтобы видеть все возможные ошибки во время разработки, настройте следующие параметры в вашем php.ini :

Установка значения в -1 покажет каждую возможную ошибку, даже если новые уровни и константы будут добавлены в новых версиях PHP. Константа E_ALL ведёт себя так-же в PHP 5.4. — php.net

Константа уровня ошибок E_STRICT была введена в 5.3.0 и не является частью E_ALL , как бы то ни было, она стала частью E_ALL в 5.4.0 Что это значит? Для вывода всех возможных ошибок в версии 5.3 вам нужно использовать либо -1 либо E_ALL | E_STRICT .

Вывод всех ошибок разными версиями PHP

  • -1 or E_ALL
  • 5.3 -1 or E_ALL | E_STRICT
  • > 5.3 -1 or E_ALL

Продакшн

Чтобы спрятать все ошибки вашей среды во время продакшна, настройте ваш php.ini следующим образом:

С этими настройками в продакшне, ошибки всё также будут записываться в лог ошибок веб сервера, но не будут показаны пользователю. Для подробной информации об этих настройках, смотрите руководство PHP:

Тестирование

Написание автоматизированных тестов для вашего кода PHP, считается наилучшей практикой. Автоматизированные тесты являются отличным инструментом для подтверждения того, что ваше приложение не сломается, когда вы внесёте изменения или добавите новую функциональность.

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

Тесто-ориентированная разработка

Разработка через тестирование (TDD) представляет собой процесс разработки программного обеспечения, который опирается на повторении очень короткого цикла разработки: сперва, разработчик пишет автоматизированные тесты, которые определяют желаемое улучшение или новую функцию, далее производит код, который успешно пройдет этот тест и наконец производит рефактор кода для соответствия стандартам. Kent Beck, человек которому приписывают статус разработчика или “переоткрывателя” техники, TDD предлагает простую конструкцию, а также вселяет уверенность.

Существует несколько различных типов тестирования, которые вы можете сделать для вашего приложения.

Модульное тестирование (Unit Testing)

Модульное тестирование — это подход к программированию, который позволяет удостовериться, что функции, классы и методы работают, как ожидается с момента начала и до конца разработки. Проверяя значения, которые приходят и выходят из различных функций и методов, вы можете быть уверены, что внутренняя логика работает правильно. Используя Внедрение Зависимостей и внедрение классов «макетов» и заглушек, вы можете убедиться, что зависимости используются правильно для большего покрытия тестами.

При создании класса или функции, вы должны создать модульный тест для каждого возможного поведения. На базовом уровне, вы должны убедиться, что ваш код выдаёт ошибку, если вы отсылаете неправильные аргументы и работает, если вы отсылаете правильные аргументы, соответственно. Это поможет убедиться в том, что изменения, которые вы сделаете относительно этого класса или функции позднее не помешают старым работать как ожидалось. Единственная альтернатива этому var_dump() в test.php, который не является способом создания приложений — больших или маленьких.

Ещё одно использование модульных тестов — вклад в open source. Если вы можете писать тесты, которые показывают сломанную функциональность, тогда почините её, и покажите, что тест пройден, патчи имеют больше шансов быть принятыми. Если вы запускаете проект, который допускает Pull Request, тогда вы должны указать это в качестве требования.

PHPUnit является фреймворком тестирования стандарта де-факто для написания модульных тестов в PHP приложениях, но также существует несколько альтернатив.

Интеграционное тестирование

Интеграционное тестирование (иногда называется Интеграция и Тестирование, с аббревиатурой “I&T”) это фаза в тестирование програмнного обеспечения, в котором отдельные модули, комбинируются и тестируются, как группа. Это происходит после модульного тестирования и перед валидационным тестированием. Integration testing takes as its input modules that have been unit tested, groups them in larger aggregates, applies tests defined in an integration test plan to those aggregates, and delivers as its output the integrated system ready for system testing.

Многие инструменты, которые могуть быть использованы для модульного тестирования, также могут быть использованы для интеграционного тестирования, поскольку используются схожие принципы.

Функциональное тестирование

Также известное, как подтверждающее тестирование, функциональное тестирование состоит из использования инструментов для создания автоматизированных тестов, которые по-настоящему используют ваше приложение, а не просто проверяют, что отдельные куски (модули) кода ведут себя и могут взаимодействовать правильно. Эти инструменты обычно работают, используя реальные данные и симулируя реальных пользователей приложения.

Инструменты функционального тестирование

  • Selenium
  • Mink
  • Codeception это фреймворк для тестирования (всё-в-одном), включающий инструменты подтверждающего тестирования

Поведенческо-ориентированная разработка

Существует две разновидности Поведенческо-ориентированной разработки (BDD): SpecBDD и StoryBDD. SpecBDD концентрируется на техническом поведении или коде, в то время как StoryBDD концентрируется на деле, будущем поведении или взаимодействии. PHP имеет фреймворки для обоих типов BDD.

Используя StoryBDD, вы пишите читаемые людьми истории, которые объясняют поведение вашего приложения. Эти истории могут быть запущены, как актуальные тесты для вашего приложения. Фреймворк, используемый в PHP приложениях для StoryBDD — Behat, который вдохновлён проектом для Ruby Cucumber и реализует Gherkin DSL для объяснения особенностей поведения.

Вместе со SpecBDD, вы пишите спецификацию, которая объясняет, как ваш код должен себя вести. Вместо тестирования функции или метода, вы объясняете, как эта функция или метод должен себя вести. PHP предлагает фреймворк PHPSpec для данных целей. Этот фреймворк вдохновлён проектом RSpec для Ruby.

Инструменты

  • Behat, StoryBDD фреймворк для PHP, вдохновлённый проектом для Ruby Cucumber;

  • PHPSpec, SpecBDD фреймворк для PHP, вдохновлённый проектом для Ruby RSpec;
  • Codeception это фреймворк для тестирования (всё-в-одном), использующий принципы BDD;

Дополнительные инструменты тестирования

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

Инструменты

  • Selenium автоматизационный инструмент для браузера интегрируемый с PHPUnit
  • Mockery Mock Object Framework интегрируемый с PHPUnit или PHPSpec

Сервера и развертывание

PHP приложения могут быть развернуты и запущены на продакшн веб-сервере рядом способов.

Платформа, как сервис (PaaS)

PaaS предоставляет системную и сетевую архитектуры, необходимые для запуска PHP приложений в веб. Это означает, как минимум, отсутствие настройки для запуска PHP приложений или PHP фреймворков.

В недавнее время PaaS стал очень популярным методом для развертывания, хостирования и расширения PHP приложений всех размеров. Вы можете найти список провайдеров PHP PaaS в нашей ресурсной секции.

Виртуальный или выделенный сервер

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

nginx и PHP-FPM

PHP, через встроенный в него менеджер процессов FastCGI (FPM), очень хорошо сочетается с nginx, который является легковесным и высокопроизводительным веб-сервером. Он использует меньше памяти, чем Apache и может лучше обрабатывать конкурентные запросы. Это особенно важно на виртуальном сервере, для которого может быть критичен объем используемой памяти.

Apache и PHP

PHP и Apache имеют длинную совместную историю. Apache широконастраиваемый и имеет большое количество доступных модулей для расширения функциональности. Это очень популярный выбор для виртуальных хостингов и лёгкой установки PHP фреймворков и приложений с открытым исходным кодом, как WordPress. К сожалению, Apache использует больше ресурсов, чем nginx, и не может выдержать столько же посетителей одновременно.

Apache имеет несколько возможных конфигураций для запуска PHP. Самая популярная и лёгкая для установки prefork MPM вместе с mod_php5. Хотя это не самое эффективное в отношении памяти решение, оно очень просто для установки и использования. Наверное, это лучшее решение, если вы не хотите углубляться в серверное администратирование. Если вы хотите использовать mod_php5, вы обязаны использовать prefork MPM.

Если вы хотите получить больше производительности и стабильности с Apache, тогда вы можете взглянуть на ту же FPM систему, как в nginx и запустить worker MPM или event MPM, используя mod_fastcgi или mod_fcgid. Эта конфигурация позволит получить существенную экономию в памяти и будет намного быстрее, но потребует больше работы для установки.

Виртуальный хостинг

PHP, благодаря своей популярности, установлен на большом количестве виртуальных хостингов. Очень трудно найти хостинг без установленного PHP, но очень важно убедиться в том, что установлена последняя версия. Виртуальные хостинги позволяют вам и другим разработчикам развертывать веб-сайты на одной машине. Достоинством виртуального хостинга является его низкая цена. Недостатком — то, что вы не знаете, чем будут заниматься ваши соседи; сильно загружая сервер или открывая бреши в безопасности. Если бюджет вашего проекта позволяет избежать использования Виртуальных хостингов, то рассмотрите другие варианты.

Построение и развёртывание вашего приложения

Если вы обновляете структуру базы данных вручную или запускаете вручную тесты перед обновлением ваших файлов, то подумайте дважды! С каждой дополнительной необходимой ручной задачей для развёртывания новой версии вашего приложения, потенциальный шанс возникновения фатальной ошибки возрастает. Делаете ли вы простое обновление, полный процесс сборки или стратегию непрерывной интеграции автоматизация сборки — ваш друг.

Среди задач, которые вы, возможно, захотите автоматизировать:

  • Управление зависимостями
  • Компиляция, минификация файлов (assets)
  • Запуск тестов
  • Создание документации
  • Запаковка
  • Развёртывание

Создание инструментов автоматизации

Инструменты построения — коллекция скриптов, которые обрабатывают общие задачи развёртки приложений. Инструменты постройки не являются частью вашего приложения, они взаимодействуют с вашим приложением «извне».

Существует большое количество инструментов с открытым исходным кодом, которые могут помочь вам автоматизировать процесс постройки, некоторые написаны на PHP, другие на других языках. Это не должно удерживать вас от их использования, если они лучше подходят под задачу. Вот несколько примеров:

Phing самый простой путь, чтобы начать автоматическую развёртку в мире PHP. С Phing вы можете контролировать ваш процесс запаковки, развёртки или тестирования с помощью простого построечного XML файла. Phing (который базируется на Apache Ant) предоставляет богатый набор задач, часто необходимых для установки или обновления веб приложения, и может быть расширен дополнительными нестандартными задачами, написанными на PHP.

Capistrano — система для начинающих-профессиональных разработчиков для исполнения команд в структуризованном, воспроизводимом пути на одной или многих удалённых машинах. Предварительно он настроен для развёртки приложений Ruby on Rails. Как бы то ни было люди успешно развёртывают и PHP приложения с ним. Успех использования Capistrano зависит на умении работы с Ruby и Rake.

Сообщение в блоге Dave Gardner PHP Deployment with Capistrano является хорошей отправной точкой для PHP разработчиков, заинтересованных в Capistrano.

Chef является нечто большим, чем просто фрэймворк развёртки. Это очень мощный интеграционный фрэймворк, основанный на Ruby, который не просто развёртывает ваше приложение, но и может построить всё серверное окружение или виртуальный сервер.

Ресурсы о Chef для PHP разработчиков:

Для дальнейшего изучения:

Непрерывная интеграция

Непрерывная интеграция — это практика разработки программного обеспечения, при которой члены команды объединяют их работу очень часто, обычно каждый член команды объединяет как минимум ежедневно — что приводит к нескольким объединениям в день. Многие команды считают, что данный подход позволяет значительно сократить интеграционные проблемы и позволяет им разрабатывать совместный продукт быстрее.

Существуют разные пути, для осуществления непрерывной интеграции для PHP. Недавно Travis CI закончил великолепную работу по созданию непрерывной интеграции, реально даже для маленьких проектов. Travis CI — сервис непрерывной интеграции для сообщества с открытым исходным кодом. Оно интегрируется с GitHub и предлагает первоклассную поддержку для многих языков, включая PHP.

Для дальнейшего изучения:

Кэширование

PHP очень быстр сам по себе, но такие ресурсоёмкие операции, как установка удалённого подключения и, к примеру, загрузка файлов, могут привести к существенному падению скорости работы приложения. К счастью, есть различные инструменты, позволяющие поднять скорость определённых частей вашего приложения, или уменьшить количество запусков этих «тяжёлых» задач.

Кэширование байткода

Во время исполнения PHP файла, на низком уровне он сперва компилируется в байткод (или опкод) и только потом исполняется байткод. Если PHP файл не изменён, то байткод будет всегда одинаков. Это значит, что шаг компиляции — пустая трата процессорных ресурсов.

И тут настает время кэширования байткода. Оно предотвращает избыточные компиляции, сохраняя в памяти байткод и переиспользуя его в последовательных вызовах. Установка подобного кэширования — вопрос пары минут, а скорость вашего приложения поднимется существенно. Поэтому нет причин не использовать кэширование.

Начиная с PHP 5.5 появилось встроенное расширение для кэширования байткод — OPcache. Оно также доступно в виде отдельного расширения для ранних версий.

Популярные системы подобного кэширования:

  • APC (PHP 5.4 и более ранние)
  • XCache
  • Zend Optimizer+ (часть Zend Server)
  • WinCache (расширение для MS Windows Server)

Кэширование объектов

Бывают моменты, когда вам необходимо кэшировать определённые объекты в вашем коде, такие как данные, которые неразумно получать ещё раз из базы данных, когда результат вряд ли изменится. Вы можете использовать ПО для кэширования чтобы сохранить эти кусочки данных в памяти, что позволит чрезвычайно быстро обратиться к ним позже. Если вы сохраните эти объекты в хранилище данных и после получите их и выдадите напрямую из кэша для некоторых запросов, вы можете получить существенное улучшение производительности и уменьшение нагрузки на сервер базы данных.

Множество популярных решений для кэширования байткода также дают вам кэшировать данные, поэтому нет причин, чтобы не воспользоваться ими. APC, XCache и WinCache предоставляют API для сохранения данных из вашего PHP кода в свой кэш в памяти.

Самыми популярными системами кэширования объектов являются APC и memcached. APC — идеальный выбор для кэширования объектов, он включает простой API для добавления данных в кэш память и при этом очень просто устанавливается и используется. Единственное существующее ограничение APC состоит в том, что он привязан к серверу на котором установлен. Memcached, напротив, устанавливается как отдельный сервис, и к нему можно получить доступ по сети, что позволяет хранить объекты в очень быстром централизованном хранилище данных и множество других систем могут получать эти данные из него.

Учтите, если PHP запущен как (Fast-)CGI приложение внутри вашего веб-сервера, то каждый PHP процесс будет иметь собственный кэш, например, APC данные не будут расшарены между вашими процессами. В этом случае имеет смысл подумать об использовании вместо него memcached, так как он не ограничен процессом PHP.

В сетевой конфигурации APC зачастую выигрывает у memcached в плане скорости доступа, но memcached обладает возможностью масштабироваться быстрее и более широко. Если иметь несколько серверов для обслуживания приложения не входит в ваши планы или вам не нужны дополнительные возможности memcached, тогда APC будет лучшим выбором для кэширования объектов.

Пример использования APC:

Подробнее о популярных системах кэширования объектов:

«Sugar Community Edition Руководство пользователя и администратора Версия 6.2 Russian Rapira Application Gu >— [ Страница 4 ] —

b. В подразделе «Информация о сотруднике» вы можете указать такую информацию как статус сотрудника, его должность, отдел, ФИО руководителя, контактные данные и т.д.

c. В подразделе «Настройка E-mail» укажите настройки электронной почты клиента, такие как основной электронный адрес, адрес для автоматического ответа на входящие электронные письма, тип почтового клиента. Более подробная информация находится в разделе ‘Настройка E-mail’ на стр. 228.

4. Если в разделе «Управление паролями» не включено автоматическое создание паролей, то на закладке «Пароль» вы можете задать пароль и сообщить его пользователю.

Вы также можете включить автоматическое создание паролей в разделе «Управление паролями», в этом случае автоматически созданный пароль будет отправлен пользователю по электронной почте на указанный в его учетной записи электронный адрес. Более подробная информация находится в разделе ‘Управление паролями’ на стр. 191.

5. На закладке «Дополнительно» вы можете изменить стандартные настройки пользователя. Более подробная информация находится в разделе ‘Настройка основных параметров системы’ на стр. 182.

6. Нажмите на кнопку «Сохранить» для создания пользователя и соответствующего сотрудника (более подробно информация о сотрудниках описана в разделе ‘Модуль «Сотрудники»’ на стр. 169.);

нажмите на кнопку «Отказаться» для возврата в панель администрирования без сохранения внесенных изменений.

7. В режиме просмотра настроек пользователя отображается закладка «Права доступа», где вы можете просмотреть список имеющихся у пользователя прав на доступ к тем или иным модулям системы, а так же назначить пользователю одну или несколько созданных в системе ролей.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Более подробная информация о создании ролей находится в разделе ‘Управление ролями’ на стр. 188.

Теперь можно переходить к назначению ролей.

Для назначения роли пользователю выполните следующее:

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

2. Откройте закладку «Права доступа», в нижней части открывшейся страницы перейдите к подразделу «Роли», нажмите на кнопку «Выбрать» и добавьте необходимые роли.

Управление информацией о пользователях Для обновления информации об одном или нескольких пользователях – выберите интересующие вас записи и воспользуйтесь панелью массового обновления как это описано в разделе ‘Массовое обновление или удаление записей’ на стр. 57.

Для просмотра подробной информации о пользователе – нажмите на его имени в списке пользователей.

Для редактирования данных пользователя – выберите необходимого пользователя из списка и нажмите на кнопку «Править».

Для дублирования информации о пользователе нажмите на кнопку «Дублировать». Дублирование является удобным способом быстрого создания схожих записей, Вы можете изменить продублированную информацию с целью создания нового пользователя. Значения следующих подразделов не дублируются: Настройки календаря, Параметры макета, Параметры E-mail, Информация о пользователе и Региональные настройки.

Для сброса настроек пользователя в стандартные значения воспользуйтесь кнопками «Установить стандартные значения» и «Сбросить настройки закладки «ГЛАВНАЯ»».

SugarCRM CE — 6.2 – Руководство пользователя и администратора Для удаления пользователя – нажмите на имени пользователя в списке пользователей и в появившейся Форме просмотра пользователя Нажмите на кнопку «Удалить».

Создание группового пользователя 1. В меню раздела «Пользователи» выберите пункт «Создать группового пользователя».

2. Укажите имя группового пользователя.

3. Укажите логин группового пользователя.

4. Укажите статус группового пользователя. По умолчанию статус создаваемого группового пользователя отмечен как «Активен».

5. Укажите настройки электронной почты группового пользователя, такие как основной электронный адрес и/или адрес для автоматического ответа на входящие электронные письма.

6. Нажмите на кнопку «Сохранить» для создания пользователя;

нажмите на кнопку «Отказаться» для возврата в панель администрирования без сохранения внесенных изменений.

Управление ролями Роли устанавливают права доступа пользователя к определенным записям системы.

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

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

Например, если вы хотите запретить доступ некоторым пользователям системы к модулю «Сделки», вы можете создать соответствующую роль, которая будет запрещать доступ к указанному модулю. Те пользователи, которым будет назначена подобная роль, не будут иметь доступа к модулю «Сделки».

Создание ролей При создании роли вы выбираете модуль, указываете, запрещен или разрешен доступ к записям данного модуля и выбираете, какие действия могут производиться над записями модуля в рамках создаваемой роли.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Если пользователю назначено несколько различных ролей, то преимущество имеют запрещающие правила. Например, если пользователю назначено сразу две роли – и роль пользователя, имеющего полный доступ ко всем записям системы и роль пользователя с ограниченным доступом к системе, то будут учитываться только правила второй роли, так как она имеет больше ограничений.

Обратите внимание на значение «Не установлено» при настройке роли.

Используйте данное значение, когда роль не должна влиять на конкретный параметр. Данная возможность позволяет создавать и объединять несколько простых ролей для достижения желаемого уровня безопасности.

При создании новой роли права на доступ ко всем модулям, а также на действия над записями по умолчанию значатся как «Не установлено». В контексте доступа к модулю это означает, что доступ к модулю разрешен; в контексте действий над записями (удаление, правка, и т.д.) это означает, что данное действие разрешено всем пользователям системы.

При настройке прав на доступ к модулю доступны следующие значения:

SugarCRM CE — 6.2 – Руководство пользователя и администратора Не установлено: Роль не влияет на параметр. Данное значение установлено по умолчанию.

Доступен: Доступ к модулю разрешен.

Заблокирован: Доступ к модулю запрещен.

Над записями модулей возможно выполнение следующих действий:

a. Удаление: Установка прав на удаление записи модуля. Если установлено «Нет», то кнопка удаления будет отсутствовать в Форме просмотра записи.

b. Правка: Установка прав на редактирование записи модуля. Если установлено «Нет», то кнопка правки будет отсутствовать в Форме просмотра записи. Также будет недоступна функция массового обновления записей.

c. Экспорт: Установка прав на экспорт записи модуля. Если установлено «Нет», то кнопка экспорта будет отсутствовать в Форме списка модуля.

d. Импорт: Установка прав на импорт данных в модуль. Если установлено «Нет», то функция импорта будет отсутствовать в меню модуля.

e. Список: Установка прав на доступ к Форме списка модуля.

f. Просмотр: Установка прав на доступ к Форме просмотра записи модуля.

При настройке прав на действия над записями доступны следующие значения:

• Все: Действие могут выполнять все пользователи системы.

• Владелец: Действие может выполнять только создатель записи.

• Нет: Действие не может быть выполнено.

• Не установлено: Роль не влияет на параметр.

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

1. В панели администрирования перейдите в раздел «Управление ролями» и в меню модуля выберите пункт «Создать роль».

2. Введите название и краткое описание роли.

3. Нажмите на кнопку «Сохранить».

На экране отобразится окно настройки прав доступа.

4. Для настройки прав нажмите дважды мышкой на соответствующем значении и из выпадающего списка выберите желаемое значение.

5. Нажмите на кнопку «Сохранить» для сохранения роли; нажмите на кнопку «Отказаться» для возврата в панель администрирования без сохранения внесенных изменений.

Для назначения роли пользователю следующее:

SugarCRM CE — 6.2 – Руководство пользователя и администратора 1. Перейдите в нижнюю часть окна настройки прав доступа к подразделу «Пользователи».

Нажмите на кнопку «Выбрать» и выберите пользователей из списка.

Также доступен альтернативный способ назначения, непосредственно в профиле пользователя: в нижней части страницы с профилем пользователя перейдите к подразделу «Роли», нажмите на кнопку «Выбрать» и добавьте необходимые роли.

Примечание: ограничения ролей не распространяются на Управление ролями Для просмотра подробной информации о роли – нажмите на его названии в списке ролей.

Для редактирования информации о роли – выберите необходимую роль и нажмите на кнопку «Править».

Для дублирования роли нажмите на кнопку «Дублировать». Дублирование является удобным способом быстрого создания схожих записей, Вы можете изменить продублированную информацию с целью создания новой роли. В продублированной роли отсутствуют назначенные пользователи.

Для удаления роли – выберите необходимую роль и нажмите на кнопку «Удалить».

Для удаления из роли пользователя откройте необходимую роль, перейдите к субпанели «Пользователи» и нажмите на иконку напротив соответствующей записи.

Просмотр прав доступа пользователей Для просмотра прав доступа пользователя в меню модуля выберите пункт «Список ролей по пользователям» и из выпадающего списка выберите необходимого пользователя. На экране отобразится таблица с правами пользователя, в которой будут отображены суммарные ограничения всех ролей, назначенных пользователю.

Управление паролями Как администратор системы вы можете использовать раздел «Управление паролями» для создания и управления паролями пользователей системы.

Вы можете включить опцию «Автоматическое создание паролей», в этом случае автоматически созданные временные пароли будут отправляться электронной почтой новым пользователям системы при создании SugarCRM CE — 6.2 – Руководство пользователя и администратора соответствующей учетной записи. Новые пользователи могут войти в систему, используя полученные данные, и на странице настроек пользователя поменять текущий пароль. Если автоматическое создание паролей отключено, то необходимо вручную указывать пароль пользователя при создании учетной записи.

Вы также можете создавать и редактировать шаблоны писем, которые будут содержать автоматически сгенерированный пароль или ссылку сброса пароля. Стандартные шаблоны для этих целей уже существуют в системе, вы можете видеть их в модуле «E-mail» при работе с шаблонами писем. По умолчанию будут использоваться именно эти шаблоны — до тех пор, пока вы не создадите собственные. Более подробная информация о создании и редактировании шаблонов содержится в разделе ‘Создание шаблонов электронных писем’ на стр. 124.

В системе существует механизм сброса пароля, если пользователь его забыл (данный механизм должен быть предварительно активирован администратором – см. раздел ‘Сброс пароля пользователем’ на стр. 193). В этом случае в окне ввода логина/пароля пользователю необходимо нажать на ссылку «Забыли пароль?», ввести электронный адрес, ранее указанный в настройках пользователя, и нажать на кнопку «Отправить E-mail» для получения письма со ссылкой на специальную страницу системы, где он сможет ввести новый пароль.

По соображениям безопасности срок действия подобной ссылки по умолчанию ограничен 30 минутами.

Включение аутентификации LDAP-аутентификация Если аутентификация в вашей организации осуществляется по протоколу LDAP или через службу каталогов Active Directory, вы можете включить поддержку данного функционала в системе. В этом случае при попытке пользователя войти в систему, аутентификация осуществляется через LDAP или Active Directory. После успешной аутентификации пользователю будет разрешен вход в систему. Если используется LDAP с SOAP, необходимо указать ключ шифрования и сообщить его пользователям системы.

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

SugarCRM CE — 6.2 – Руководство пользователя и администратора Настройка параметров пароля 1. В панели администрирования выберите раздел «Управление паролями».

2. На появившейся странице введите следующую информацию:

Автоматическое создание паролей В данном подразделе вы можете включить механизм автоматического создания паролей, а так же указать срок действия паролей, генерируемых системой. Убедитесь, что у вас корректно настроен сервер исходящей почты и указываются верные электронные адреса при создании учетных записей пользователей системы. В целях безопасности администратор системы может устанавливать срок действия пароля, создаваемого системой. Вы можете указать как количество входов в систему, так и временной интервал, по истечении которого пароль будет недействителен.

Сброс пароля пользователем SugarCRM CE — 6.2 – Руководство пользователя и администратора В данном подразделе вы можете включить возможность сброса пароля через ссылку «Забыли пароль?» на странице ввода логина/пароля. По умолчанию данный параметр отключен, т.к. возможно использование аутентификации LDAP, где данный функционал не используется.

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

На электронный адрес пользователя будет отправлено письмо со ссылкой на страницу системы, где пользователь сможет указать новый пароль.

Истечение срока действия генерируемой ссылки сброса пароля.

Используйте «Нет», чтобы срок действия ссылки не был ограничен, либо укажите временной период, по истечении которого ссылка перестанет быть актуальной.

Включить reCAPTCHA. Данный параметр может быть использован только в том случае, если включена возможность сброса пароля. Введите открытый и закрытый ключи, полученные с сайта http://recaptcha.net, в соответствующие поля.

В данном подразделе вы можете создать или отредактировать существующие шаблоны писем, которые будут содержать информацию об автоматически сгенерированном пароле или информацию о сбросе SugarCRM CE — 6.2 – Руководство пользователя и администратора Шаблон письма, содержащий автоматически сгенерированный пароль. В выпадающем списке выберите пункт «System-generated password email» и нажмите на кнопку «Создать».

Шаблон письма, содержащий автоматически сгенерированную ссылку сброса пароля. В выпадающем списке выберите пункт «Forgot Password email» и нажмите на кнопку «Создать».

Для доступа к созданным шаблонам воспользуйтесь пунктом меню «Шаблоны E-mail» модуля «E-mail».

LDAP-аутентификация В данном подразделе вы можете настроить LDAP-аутентификацию, но учтите, что при использовании LDAP-аутентификации параметр «Включить возможность сброса пароля» должен быть выключен.

Отметьте соответствующую опцию, после чего заполните Сервер. Укажите название сервера LDAP.

Порт. Укажите порт сервера.

DN пользователя. Укажите уникальное имя (Distinguished Name) пользователя; например, ou=people, dc=example, dc=com.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Параметры. Укажите любые дополнительные параметры, применяемые при аутентификации пользователей, например, is_user_ >

Bind-атрибут. Укажите название атрибута, используемого при аутентификации пользователей в LDAP, например, для openLDAP это userPrincipleName.

Login-атрибут. Укажите название атрибута, используемого для поиска пользователей в LDAP, например, для openLDAP это dn.

Членство в группе. Отметьте данный параметр, если пользователь является членом определенной группы и заполните следующие поля:

DN группы. Укажите уникальное имя группы; например, ou=groups, dc=example, dc=com.

Название группы. Укажите название группы; например, cn=sugarcrm.

Атрибут пользователя. Уникальный идентификатор пользователя, uid.

Атрибут группы. Атрибут группы, MemberUid.

Аутентификация. Отметьте данный параметр, если для аутентификации на сервере LDAP используется специальный мандат; в появившихся полях укажите имя пользователя и пароль.

Автоматическое создание пользователей. Отметьте данный параметр для создания соответствующего пользователя Sugar, если он Ключ шифрования. Если используется LDAP с SOAP, введите ключ, который будет использоваться для шифрования пользовательских паролей в плагине Sugar для Microsoft Outlook. (в PHP должно быть подключено расширение mcrypt).

SAML-аутентификация В данном подразделе вы можете настроить SAML-аутентификацию, но учтите, что при использовании SAML-аутентификации параметр «Включить возможность сброса пароля» должен быть SugarCRM CE — 6.2 – Руководство пользователя и администратора Отметьте соответствующую опцию, после чего заполните следующие SAML URL: Укажите URL для аутентификации. Обратите внимание, что ссылка должна выглядеть следующим образом:

http://ПутьКВашейКопииSugarCRM/index.php?module=Users&action=Authenticate X509-сертификат: Укажите публичный ключ сертификата X.509.

3. Нажмите на кнопку «Сохранить» для сохранения настроек; нажмите на кнопку «Отказаться» для возврата в панель администрирования без сохранения внесенных изменений.

Поддержка Данный раздел состоит из трех подразделов Sugar — портал технической поддержки Используйте данную ссылку для просмотра англоязычных форумов и FAQ, посвященных SugarCRM; загрузки последних версий приложения и подробной документации, просмотра последних новостей о системе и т.д.

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

SugarCRM CE — 6.2 – Руководство пользователя и администратора Для проверки обновлений вручную – снимите флажок с параметра «Автоматически проверять доступные обновления» и нажмите на кнопку «Проверить сейчас».

Online-документация Используйте данную ссылку для быстрого доступа к подробной англоязычной документации по текущей версии системы.

Данный раздел позволяет настроить все основные параметры системы и состоит из следующих подразделов:

‘Настройка конфигурации’ на стр. 199.

‘Мастер обновления’ на стр. 214.

‘Резервные копии’ на стр. 215.


‘Восстановление’ на стр. 215.

‘Региональные настройки’ на стр. 218.

‘Глобальный поиск’ на стр. 222.

‘Языковые пакеты’ на стр. 223.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Настройка конфигурации Используйте эту опцию для настройки общих параметров в соответствии со спецификой вашей организации. Некоторые стандартные настройки пользователи при необходимости смогут переопределить позже на странице настроек пользователя.

Пользовательский интерфейс Используйте данный раздел для настройки пользовательского Для настройки интерфейса выполните следующее:

1. Настройте следующие параметры:

Количество отображаемых записей на странице. Укажите максимальное количество записей модуля, выводимых на каждой странице Формы списка. Если количество записей модуля будет превышать данное значение, то записи будут доступны на нескольких Отображать время ответа сервера. По умолчанию с нижней части каждой страницы отображается время ответа сервера. Отключите данную опцию, если вы не хотите видеть этот параметр.

Запретить пользователям настройку главной страницы. Отметьте данный параметр, если вы хотите запретить пользователям настраивать Главную страницу системы – перемещать, добавлять или удалять SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Максимальное количество Разделов на главной странице системы.

Укажите максимальное количество Разделов, которые одновременно могут присутствовать на Главной странице. По умолчанию данное Отображать закладки на странице регистрации. По умолчанию закладки модулей видны на странице регистрации в системе.

Отключите данный параметр, если вы не хотите видеть закладки на странице регистрации.

Запретить пользователям настройку субпанелей. Отметьте данный параметр, если вы хотите запретить пользователям перемещать субпанели в Форме просмотра.

Показывать полные имена пользователей. Отметьте данный параметр, если вы хотите видеть в системе полные имена пользователей Название системы. Введите название системы, которое будет постоянно отображаться в заголовке браузера.

Текущий логотип. Логотип вашей организации, отображаемый в левом верхнем углу каждой страницы системы.

Выбрать новый логотип. Укажите путь к новому логотипу системы, который вы хотите разместить вместо текущего. Допустимы следующие форматы изображений: PNG или JPG. Рекомендуемый размер изображения — 212×40 пикселей.

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

Минимальный интервал автообновления. Выберите из списка необходимое значение, если вы хотите установить минимальный интервал автообновления разделов (дашлетов) страницы «ГЛАВНАЯ».

При выборе пункта «Никогда» функция автообновления будет недоступна в параметрах разделов (дашлетов).

2. Для сохранения параметров нажмите на кнопку «Сохранить».

3. Для восстановления стандартных настроек нажмите на кнопку «Восстановить».

Настройка прокси-сервера Если вы выходите в интернет, используя прокси-сервер, то для того, чтобы система могла проверять доступные обновления, необходимо произвести дополнительные настройки.

1. Заполните следующие поля:

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Использовать прокси-сервер?. Отметьте данный параметр, если используется прокси-сервер.

Прокси-сервер. Введите адрес прокси-сервера.

Порт. Введите порт прокси-сервера.

Аутентификация?. Отметьте данный параметр, если прокси-сервер требует аутентификации.

Логин. Введите логин.

Пароль. Введите пароль.

2. Для сохранения параметров нажмите на кнопку «Сохранить».

3. Для восстановления стандартных настроек нажмите на кнопку Отметьте данный параметр, чтобы пользователи могли звонить через Skype, нажимая мышкой на телефонные номера.

Если на компьютерах пользователей установлен плагин Sugar для Microsoft Word, то этот параметр позволяет выполнять слияние с документами Word. Например, вы можете выполнить слияние контактной информации с заранее подготовленным к слиянию документом Microsoft Word. Кнопка «Слияние» доступна в верхней Проверка IP-адреса пользователя. В целях безопасности проверяются IPадреса пользователей, входящих в систему. Параметр установлен по умолчанию.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Вести журнал медленных запросов. Выберите данный параметр для фиксации в файле sugarcrm.log всех медленных запросов. Информация может быть полезна при анализе производительности системы.

Максимальный размер загружаемого файла. Укажите максимальный размер файла в байтах, который может быть загружен в систему.

Вести журнал использования памяти. Выберите данный параметр для фиксации использования памяти в файле sugarcrm.log.

Пороговое время выполнения медленных запросов. Укажите в миллисекундах пороговое значение времени для медленных запросов. Запросы, выполнение которых занимает больше времени, чем указанное значение, будут фиксироваться в файле sugarcrm.log. Информация может быть полезна при анализе производительности системы.

Отображать стековую трассировку ошибок. При включении данного параметра система будет отображать локализацию ошибки (если таковая произойдет) в стековом трассировщике приложения. Информация предназначена для отладки приложения.

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

Параметры доступности vCal. Используйте этот параметр для указания количества месяцев, в течение которых возможна публикация данных о занятости (звонки и встречи) из календаря. При включенной публикации допустимы значения от 1 до 12 месяцев. Для выключения возможности публикации введите «0».

Для сохранения параметров нажмите на кнопку «Сохранить».

Для восстановления стандартных настроек нажмите на кнопку SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Параметры журнала В журнале фиксируются события, происходящие во время работы с системой.

По умолчанию данные записываются в файл sugarcrm.log, который расположен в корневой папке системы. В случае возникновения любой нештатной ситуации вы всегда можете обратиться к файлу журнала, что может помочь в решении возникших проблем.

При обновлении Sugar параметры журнала переносятся из файла log4.php предыдущей версии системы.

При необходимости можно изменить уровень детализации фиксируемых событий.

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

debug: Фиксация сообщений, помогающих в отладке приложения.

info: Фиксация информационных сообщений.

warn: Фиксация предупреждающих сообщений.

error: Фиксация сообщений об ошибках.

fatal: Фиксация сообщений о серьезных ошибках, приводящих к прекращению работы приложения. Данный уровень детализации security: Фиксация событий, которые могут поставить под угрозу безопасность приложения.

off. Отключение фиксации любых событий.

При указании определенного уровня детализации будут созданы файлы журналов как для указанного, так и для всех предыдущих уровней. Например, при указании уровня «Error», будут созданы файлы журналов для уровней «Error», «Fatal» и «Security».

Размер файла журнала по умолчанию равен 10 MB. Использование файлов журнала большого размера может замедлить работу системы. Если вы просматриваете файлы журнала регулярно, то рекомендуется осуществлять просмотр событий с последней зафиксированной контрольной точки.

Для настройки параметров журнала выполните следующее:

1. В параметрах журнала заполните следующие поля:

Имя файла журнала. Укажите имя файла журнала.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Расширение. Укажите расширение файла журнала. По умолчанию используется «log».

Дополнительный суффикс имени файла журнала. Из выпадающего списка выберите название временного интервала, которое будет добавлено к основному имени файла. Это поможет вам определить необходимый файл при просмотре журнала.

Максимальный размер файла журнала. Укажите максимальный размер файла журнала в мегабайтах. Значение по умолчанию — 10MB.

Уровень детализации. Из выпадающего списка выберите необходимый уровень детализации. По умолчанию используется Формат даты по умолчанию. Укажите формат даты по умолчанию, используемый в файле журнала. Формат должен поддерживаться функцией strftime. Значение по умолчанию — %c.

Максимальное количество файлов журнала. Укажите максимально допустимое количество файлов журнала. Если данное число будет превышено, то будут удаляться наиболее ранние файлы журнала.

Значение по умолчанию – 10 файлов.

2. Для сохранения параметров нажмите на кнопку «Сохранить».

3. Для восстановления стандартных настроек нажмите на кнопку Просмотр журнала. Выберите данный пункт в меню модуля для просмотра журнала.

Для просмотра журнала выполните следующее:

1. Нажмите на ссылку «Просмотр журнала», расположенную в нижней части страницы настроек конфигурации.

2. Нажмите на одну из следующих кнопок:

«Далее» — для просмотра последних записей журнала.

«Установить контрольную точку» — для просмотра записей, появившиеся с момента нажатия этой кнопки и до момента SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Например, для анализа возникшей проблемы выберите журнала». На появившейся странице нажмите на кнопку просмотра последних событий, произошедших после нажатия на кнопку «Показать все», нажмите на кнопку «Далее». Для анализа определенных событий: откройте журнал на отдельной вкладке браузера и нажмите на кнопку «Установить контрольную точку», на основной вкладке системы выполните необходимые действия, вернитесь на вкладку журнала и нажмите на кнопку «Обновить с контр.

3. Для поиска отдельной фразы воспользуйтесь окном поиска.

При использовании в окне поиска регулярных выражений отметьте опцию «RegExp». После ввода критериев поиска нажмите на клавишу «Enter» для запуска процесса поиска.

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

Для выполнения заданий в Sugar используются ресурсы внешних планировщиков, таких как cron (в UNIX-подобных операционных системах) или планировщик заданий (в Windows).

Вы можете настроить выполнение следующих заданий:

Очищать таблицы трекера. Задание очищает таблицы tracker и tracker_sessions каждые 30 дней.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Проверять почтовые ящики для входящей почты. Задание проверяет почтовые ящики активных учетных записей, настроенных в разделе «Входящие E-mail» панели администрирования.

Запускать ночью проверку почтовых ящиков для возвращаемых писем. Задание проверяет все учетные записи, у которых в колонке «Действие» указано «Обработка возврата». Задание является важной составляющей при проведении массовой рассылки писем.

Запускать ночью массовую рассылку писем. Задание обрабатывает очередь исходящих писем при проведении массовой рассылки..

Очищать базу данных первого числа каждого месяца. Задание проверяет все таблицы системы на наличие записей, помеченных на удаление (deleted = 1) и физически удаляет найденные записи из базы данных первого числа каждого месяца. Резервные копии файлов очищаемых таблиц помещаются в папку cache/backups, к названиям создаваемых копий добавляется информация о дате/времени создания резервного файла.

Настройка заданий планировщика отредактировать файл crontab.

Редактирование файла crontab 1. В командной строке наберите: crontab -e.

2. Добавьте следующую строку в открывшемся файле, указав полный путь * * * * * cd /path/to/sugar; /path/to/php -c/path/to/php.ini -f cron.php path/to/sugar – путь к папке с установленной системой path/to/php – путь к папке с PHP path/to/php.ini – путь к используемому файлу конфигурации PHP 3. Сохраните внесенные изменения и закройте файл.

При возникновении проблем выполните следующее:

1. Определите, от чьего имени запущен Apache.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Если для размещения системы вы воспользовались услугами хостинговой кампании, то при правильной настройке окружения виртуального хоста Apache будет запущен под вашим логином в вашей виртуальной папке. Уточнить данную информацию вы Также можно выполнить следующее:

2. Проверьте настройки PHP.

Проверьте наличие библиотек для работы с БД и IMAP, библиотек Проверьте наличие бинарного файла PHP (или php) и связанных с ним библиотек. Как правило, данные файлы находятся в папках /usr/bin или /usr/local/bin. Если файлы в указанных папках отсутствуют – выполните команду которая укажет путь к необходимым файлам.

Если файлы все же не были найдены – обратитесь к разделу ‘Решение возможных проблем’ на стр. 210.

3. Создайте задачу для пользователя Apache:

b. Добавьте следующую строку в открывшемся файле, указав c. Для дополнительной настройки времени выполнения задания В данном примере задание будет выполняться каждые три */3 * * * * cd /path/to/sugar; php -f cron.php /dev/null 2& Для получения дополнительной информации о настройке планировщика в командной строке наберите:

Илон Маск рекомендует:  Список полей в конкретной таблице MySQL

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты 4. Рекомендуется протестировать добавленную задачу, выполнив cd /path/to/sugar; php -f cron.php /dev/null 2&1 непосредственно из командной строки. Если при выполнении команды возникли проблемы – обратитесь к разделу ‘Решение возможных проблем’ на 5. Сохраните и закройте файл.

В Microsoft Windows используйте планировщик заданий:

1. Создайте командный файл, в котором будут содержаться необходимые команды.

2. В командный файл добавьте следующие строки (предполагается, что система установлена на диск «С»):

• c:\path\to\php.exe -c c:\windows\php.ini -f cron.php 3. Запустите командный файл для проверки отсутствия в нем ошибок.

4. При возникновении проблем выполните следующее:

a. Проверьте, что установлена PHP не ниже версии 5.2.x.

b. Проверьте наличие необходимых файлов (в т.ч. php-cgi.exe), а так же подключение всех необходимых библиотек в файле 5. Создайте BAT или CMD-файл и добавьте в него вышеуказанные 6. Протестируйте созданный файл в консоли.

7. В панели управления запустите планировщик, добавьте в него новую задачу, в качестве действия укажите путь к созданному командному файлу и настройте задачу на ежеминутное выполнение.

Для создания нового задания выполните следующее:

1. В меню планировщика нажмите пункт «Создать задание».

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты 2. Настройте следующие основные параметры:

Название задачи. Введите название задачи.

Статус. Из выпадающего списка выберите «Активно», чтобы задача выполнялась в указанное время или «Не активно», чтобы задача была сохранена, но не выполнялась.

Задача. Из выпадающего списка выберите задачу или введите в поле «OR» адрес скрипта для запуска его с указанного веб-сервера.

Интервал. Укажите интервал выполнения задачи. По умолчанию отображаются основные параметры планировщика, где вы можете задать интервал выполнения задания в часах или минутах. По умолчанию задача выполняется ежеминутно.

3. Для настройки расписания с более детальными параметрами нажмите на ссылку «Показать дополнительные параметры». Здесь также вы можете указать следующие параметры:

Выполнить, если пропущена. Выполнять все пропущенные ранее Дата и время начала. При помощи календаря укажите дату и время начала выполнения задачи.

Дата и время окончания. При помощи календаря укажите дату и время окончания выполнения задачи.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Задача активна с. Укажите время, с которого выполняется Задача активна до. Укажите время, до которого выполняется 4. Нажмите на кнопку «Сохранить» для сохранения задания; нажмите на кнопку «Отказаться» для возврата в панель администрирования без сохранения внесенных изменений.

5. Для экспорта одного или нескольких заданий планировщика в расположенную над списком заданий.

Управление заданиями планировщика 2. Выберите необходимое задание и при необходимости измените соответствующие настройки. Здесь же вы можете дублировать или удалить текущее задание.

3. Нажмите на кнопку «Сохранить» для сохранения задания; нажмите на кнопку «Отказаться» для возврата в панель администрирования без сохранения внесенных изменений.

Решение возможных проблем 1. Планировщик не выполнил задание, даже несмотря на то, что в файле cron.log зафиксировано, что crontab выполнил В переменной окружения PATH пользователя, от имени которого запущен веб-сервер, не прописан путь к файлам PHP.

Пропишите путь к файлам PHP непосредственно в crontab, например:

* * * * /usr/local/bin/php -f cron.php /dev/null 2& В переменной окружения PATH пользователя, от имени которого запущен веб-сервер, не прописан путь к файлу php.ini, SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Пропишите путь к файлу php.ini непосредственно в crontab, * * * * php -c /path/to/php.ini -f cron.php /dev/null 2& В планировщике измените способ вызова файла cron.php.

* * * * curl —silent http://Domain/sugarInstance/cron.php, Если используется wget, то планировщик должен содержать Наиболее частая проблема – отсутствие подключения необходимых библиотек; в результате система не может получить доступ к базе данных или к почтовому серверу. Чтобы РНР имел доступ к необходимым библиотекам — необходимо правильно указать путь к файлу конфигурации php.ini, содержащему всю SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Узнать путь в файлу php.ini можно из листинга команды:

Вторая наиболее частая проблема – неверные настройки в файле php.ini, в частности отсутствие пути или неверный путь к необходимым библиотекам. Для проверки настроек выполните a. В текстовом редакторе откройте файл php.ini.

b. Найдите раздел, озаглавленный как «Paths and Directories».

c. Проверьте параметр «extension_dir», в значении которого должен d. Путь к библиотекам также указан в переменной окружения e. Исправьте все ошибки – как правило, указание абсолютного пути к папке с библиотеками решает данную проблему.

Необходимые библиотеки отключены.

a. В текстовом редакторе откройте файл php.ini.

b. Найдите раздел, озаглавленный как «Dynamic Extensions».

c. Перейдите к комментарию «Windows Extensions», под ним перечислен список доступных библиотек.

d. Убедитесь, что необходимые расширения раскомментированы (перед ними отсутствует символ точки с запятой). Для работы системы требуются как минимум следующие библиотеки:

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

Для запуска процесса диагностики выполните следующее:

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Появится перечень диагностических операций. По умолчанию выполняются все перечисленные операции.

В процессе диагностики выполняются следующие операции:

Содержимое файла config.php – Копирование файла config.php из корневой директории системы. Перед копированием в целях безопасности пароль базы данных будет заменен звездочками.

Содержимое папки Custom – Копирование папки custom, содержащей все пользовательские изменения макетов модулей.

phpinfo() — Копирование данных, полученных при выполнении функции MySQL — Дамп таблиц с данными о конфигурации системы Копирование нескольких таблиц базы данных, с заменой некоторой информации звездочками в целях безопасности.

MySQL — Структура таблиц — Сохранение структуры всех таблиц базы даны в виде файла HTML.

MySQL — Основная информация – Сохранение некоторой основной информации, такой как версия БД, кодировки и т.д.

Анализ контрольных сумм – Подсчет контрольных сумм всех файлов системы (MD5) и сравнение их с изначально подсчитанными контрольными суммами, содержащимися в файле files.md5. Это позволит определить, какие файлы системы были изменены.

Наличие файлов BeanList/BeanFiles – Если в систему был загружен пользовательский модуль и его автор некорректно указал все SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты необходимые связи, то могут возникнуть проблемы при работе с системой. Данная операция проверяет на корректность все связи Получение содержимого файла журнала – Копирование файла Структура таблиц на основе VARDEFS — Копирование структуры таблиц базы данных Sugar.

2. Уберите флажки с тех операций, которые вы не хотите запускать и нажмите на кнопку «Запустить диагностику».

Будет создан архив, содержащий результаты выполнения выбранных 3. Для сохранения или удаления результатов диагностики Мастер обновления После получения файла обновления вы можете загрузить его в систему, используя Мастер обновления. Более подробная информация содержится в разделе ‘Обновление системы’ на стр. 30.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Используйте данный раздел для создания резервных копий файлов системы. Обратите внимание, что в данном разделе не создаются резервные копии базы данных.

Для создания резервной копии файлов системы выполните 1. В панели администрирования нажмите на раздел «Резервные записи для пользователя, под которым запущен вебсервер.

Укажите название zip-архива, включая расширение файла.

Нажмите на кнопку «Создать резервную копию».

Восстановление Используйте данный раздел для обновления и восстановления данных при переходе с предыдущих версий системы на новую.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты В разделе вам доступны следующие функции:

Быстрое восстановление: Восстановление и перестройка БД, расширений, Vardefs, разделов (Dashlets) у выбранных модулей. После выбора данной функции выберите необходимые модули и нажмите на кнопку «Восстановить». С помощью данной функции вы также можете очистить кэш ленты событий.

Увеличение размера поля: Увеличение размера char/varchar/text-полей Перестройка.htaccess-файла: Изменение.htaccess для ограничения прямого доступа к файлам.

Перестройка файла конфигурации: Перестройка файла config.php:

обновление версии системы и добавление значений по умолчанию при отсутствии их явных объявлений. После выбора данной функции нажмите на кнопку «Восстановить».

Перестройка связей: Перестройка связей метаданных и очистка файла Перестройка заданий планировщика: Перестройка запланированных заданий. После выбора данной функции нажмите на кнопку «Восстановление».

Перестройка разделов: Перестройка кэш-файла разделов (Dashlets).

Перестройка Javascript Languages: Перестройка javascript-версий Перестройка сжатых файлов Javascript: Копирование оригинальных файлов Javascript и замена ими существующих сжатых файлов.

Перестройка JS Grouping Files: Перезапись JS Grouping Files их более свежими версиями.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Минимизация файлов Javascript: Минимизация оригинальных файлов Javascript и замена ими существующих сжатых файлов.

Восстановление файлов Javascript: Сжатие файлов Javascript, включая все внесенные изменения, но без перезаписи сжатыми файлами оригинальных файлов Javascript.

Восстановление нестрочных полей: Приведение названий полей пользовательских таблиц и файлов метаданных к нижнему регистру.

Восстановление ролей: Восстановление ролей путем добавления новых модулей, поддерживающих контроль доступа, а так же путем добавления контроля доступа к уже существующим модулям.

Восстановление учетных записей входящей почты: Восстановление учетных записей входящей почты и шифрование паролей.

Удаление XSS: Удаление XSS-уязвимостей из базы данных. После выбора данной функции выберите необходимые модули и нажмите на кнопку «Выполнить».

Восстановление мероприятий: Восстановление мероприятий (звонков, встреч) и дат.

включение/отключение пользователей, добавленных в систему при заполнении БД демонстрационными данными в процессе установки Используйте данный раздел для добавления новых валют, а также для настройки курса валют.

Для каждой добавляемой валюты введите название, символ (например Руб.), курс к доллару и код (например — RUR). Установите статус в значение «Не активна», если вы не хотите использовать данную валюту SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Региональные настройки Используйте данный раздел для настройки отображения дат, времени, символов валют, имн, а также для изменения языка интерфейса системы. Если используется база данных MySQL, вы также можете указать порядок сортировки записей приложения.

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

Формат даты. Из выпадающего списка выберите стандартный формат даты. Каждый пользователь может использовать свой формат даты, заменив стандартный формат на странице настроек пользователя.

Формат времени. Из выпадающего списка выберите стандартный формат времени. Каждый пользователь может использовать свой формат времени, заменив стандартный формат на странице настроек SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Языковой пакет. Из выпадающего списка выберите стандартный языковой пакет. На данном языке будет отображаться стартовая страница ввода логина/пароля. В дальнейшем пользователь сможет выбрать любой из установленных в систему языковых пакетов, выбрав соответствующее значение из списка на странице ввода логина/пароля.

Формат имени. Укажите стандартное приветствие и формат ФИО, которые будут отображаться в Формах списка и Формах просмотра.

Каждый пользователь может использовать свой формат имени, заменив стандартный формат на странице настроек пользователя.

Используйте данный раздел для настройки стандартной валюты, используемой в системе. Каждый пользователь может установить свое значение, заменив стандартную валюту на странице настроек Валюта: Введите название используемой валюты.

Символ валюты. Введите символ валюты.

Код валюты (ISO 4217). Введите код валюты Символ разделителя разрядов. Введите символ разделителя разрядов.

Символ десятичного разделителя. Введите символ десятичного Параметры экспорта Используйте данный подраздел для настройки параметров экспорта, таких как символ разделителя и кодировка. Указанная кодировка также будет использоваться и при импорте данных. Параметры будут применяться ко всем пользователям системы, однако, каждый пользователь может изменить свои индивидуальные параметры на странице настроек пользователя.

По умолчанию в системе используется кодировка UTF-8. Поэтому, если, к примеру, вам необходимо загружать/выгружать данные в кодировке СР1251 – выбирайте соответствующую кодовую страницу.

По умолчанию, и пользователи, и администраторы системы могут экспортировать данные. Однако администратор системы может запретить данную функцию обычным пользователям.

Символ разделителя. Введите символ, разделяющий экспортируемые Стандартная кодировка при импорте и экспорте данных. Выберите необходимую кодовую страницу. Стандартное значение — UTF-8.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Отключить экспорт. Запрет экспорта данных и администраторам и пользователям системы.


Разрешить экспорт только администратору. Запрет экспорта данных обычным пользователям системы.

Данный подраздел доступен в системе только для пользователей БД MySQL. Параметр должен быть выставлен в соответствии с сортировкой данных в таблицах БД. Выберите необходимое значение из выпадающего списка. По умолчанию используется значение «utf8_general_ci». Изменение этого параметра не приведет к изменению существующих таблиц; все новые таблицы, созданные после изменений сортировки, унаследуют способ сортировки в названиях таблиц.

Нажмите на кнопку «Сохранить» для сохранения настроек; нажмите на кнопку «Отказаться» для возврата в панель администрирования без сохранения внесенных изменений.

Лента событий информирует пользователей системы о происходящих в системе событиях: регистрации нового Контакта, Предварительного контакта, Сделки или Обращения. Также в ленте выводится соответствующая информация при изменении той или иной записи:

конвертации предварительного контакта в контакт, закрытии сделки или Вы можете включить отслеживание событий для следующих модулей:

Предварительные контакты, Обращения, Сделки, Контакты.

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

Для настройки ленты событий выполните следующее:

1. В панели администрирования выберите раздел «Параметры ленты событий» и настройте следующие параметры:

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Включить ленту событий. Доступность ленты событий для всех пользователей системы. Отобразить ленту можно нажав на кнопке «Добавление разделов» на главной странице системы и выбрав закладку Включить для следующих модулей: Отображение событий для Включить пользовательские ссылки. Возможность использования пользовательских ссылок.

2. Для сохранения изменений нажмите на кнопку «Сохранить». Для удаления всех записей из ленты событий нажмите на кнопку «Очистить Любая запись ленты событий или пользовательская ссылка будет автоматически удалена через две недели после е создания. Любые другие добавленные в ленту ссылки могут быть удалены из кэша системы через раздел «Восстановление», функция «Быстрое Темы Используйте данный раздел для настройки доступности тем системы.

Пользователи могут использовать только доступные темы. По умолчанию доступны все темы системы. Смена текущей темы описана в разделе ‘Настройка тем’ на стр. 47.

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

1. В панели администрирования выберите раздел «Темы».

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты 2. Для настройки доступности тем – переместите мышкой название темы в соответствующий столбец.

3. Для выбора стандартной темы – выберите необходимое название в списке.

4. Нажмите на кнопку «Сохранить» для сохранения настроек; нажмите на кнопку «Отказаться» для возврата в панель администрирования без сохранения внесенных изменений.

Глобальный поиск В данном разделе администратор может указать модули, которые пользователи могут использовать в процессе глобального поиска. Поиск может производиться как в стандартных, так и в пользовательских модулях, установленных в систему.

Для выбора модулей, участвующих в поиске, выполните следующее:

В панели администрирования выберите раздел «Глобальный поиск».

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

Нажмите на кнопку «Сохранить» для сохранения настроек; нажмите на кнопку «Отказаться» для возврата в панель администрирования без сохранения внесенных изменений.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Языковые пакеты В данном разделе администратор может указать доступные языки интерфейса системы. Один из указанных языковых пакетов пользователь сможет выбрать при входе в систему.

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

1. В панели администрирования выберите раздел «Языковые пакеты».

2. Переместите в правую колонку те языковык пакеты, которые должны быть скрыты от пользователей (по умолчанию доступны все языковые пакеты).

3. Нажмите на кнопку «Сохранить» для сохранения настроек; нажмите на кнопку «Отказаться» для возврата в панель администрирования без сохранения внесенных изменений.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Подключения Используйте данный раздел для управления подключениями к внешним источникам данных. При настроенном подключении пользователи могут работать с внешней информацией непосредственно из Формы просмотра записи. Например, пользователь может обновить адреса и телефоны Контрагента. За дополнительной информацией обратитесь к разделу ‘Интеграция данных системы с внешними данными’ на стр. 58.

Как правило, подключения используются в модулях, созданных на основе шаблонов «Персона» и «Компания», например в модулях «Контакты», «Предварительные контакты» и «Контрагенты». Однако вы можете настраивать подключения как в стандартных, так и в пользовательских модулях. Основное требование к подобному модулю – он должен содержать Форму просмотра.

По умолчанию в системе используется подключение к LinkedIn. У разработчиков есть возможность создавать подключения к другим источникам данных, которые могут быть добавлены в систему через Загрузчик модулей. Дополнительные подключения также могут быть найдены на сайте Sugar Forge http://www.sugarforge.com и Sugar Exchange — http://www.sugarexchange.com.

Для настройки подключения выполните следующее:

1. В панели администрирования выберите раздел «Параметры подключения».

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты 2. Выберите подраздел «Настройка URL подключения».

3. Каждое доступное подключение отображается на отдельной вкладке. При необходимости отредактируйте URL подключения и нажмите на кнопку «Сохранить».

Для выбора модулей выполните следующее:

1. В параметрах подключения выберите подраздел «Выбор модулей».

2. Каждое доступное подключение будет отображено на отдельной вкладке.

Вкладка содержит две колонки. В левой колонке содержатся модули, имеющие подключения к внешнему источнику данных. По умолчанию все модули отключены от внешних источников данных и содержатся в правой колонке.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты 3. Переместите мышкой необходимые модули в соответствующую колонку и нажмите на кнопку «Сохранить».

Настройка полей подключения Здесь вы можете настроить соответствие полей подключения полям модуля системы. Подобные поля модуля будут отображать значок LinkedIn. При наведении курсора мыши на значок будет отображено всплывающее окно с соответствующими данными.

Для настройки полей подключения выполните следующее:

1. В параметрах подключения выберите подраздел «Настройка полей».

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты 2. Каждое доступное подключение будет отображено на отдельной вкладке. В левой части вкладки расположены поля подключения, в правой части – выпадающие списки, из которых необходимо выбрать соответствующие поля модулей.

3. Выберите соответствующие поля модулей и нажмите на кнопку «Сохранить».

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

‘Настройка E-mail’ на стр. 228.

‘Входящие E-mail’ на стр. 230.

‘Параметры рассылки E-mail’ на стр. 234.

‘Управление очередью E-mail’ на стр. 237.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Настройка E-mail Используйте данный раздел для:

настройки стандартного почтового сервера исходящей почты включения отправки уведомлений при назначении ответственного настроек параметров безопасности, путем исключения из писем определенных тегов до того, как письма будут отображены в В модуле «E-mail» пользователи могут добавлять информацию об альтернативных серверах исходящей почты и использовать их вместо сервера исходящей почты, указанного по умолчанию.

Для настройки параметров E-mail выполните следующее:

1. В панели администрирования выберите раздел «Настройка E-mail».

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты 2. В подразделе «Параметры сервера исходящей почты» заполните От «Имя». Введите имя отправителя, например, название От «Адрес». Введите электронный адрес отправителя.

3. Выберите одного из предлагаемых провайдеров электронной почты или нажмите на кнопку «Разное» и введите вручную необходимые 5. Разрешить пользователям использовать данные настройки при выборе сервера исходящей почты. При выборе данной опции все пользователи смогут отправлять электронную почту (включая автоматические уведомления о назначении записей) с SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты использованием указанного здесь стандартного сервера исходящей почты. В противном случае каждому пользователю при настройке учетной записи электронной почты необходимо вручную ввести настройки сервера исходящей почты.

6. Вы можете воспользоваться кнопкой «Отправка тестового письма»

для проверки корректности введенных параметров.

7. В подразделе «Параметры E-mail» вы можете выбрать следующие Отправление уведомлений. Отправление уведомлений тем пользователям, которым назначается запись.

Отправлять уведомления с адреса назначающего пользователя.

В адресе отправителя будет указан электронный адрес назначающего пользователя.

Удалять связанные с удаленными письмами примечания и вложения. При удалении писем будут также удаляться все 8. В подразделе «Параметры безопасности E-mail» настройте Выбрать минимальный уровень безопасности, установленный в Outlook по умолчанию. Во входящей почте будет разрешен Отметить все теги. Во входящей почте будут запрещены все теги.

В противном случае – снимите этот флаг и запретите к использованию только необходимые теги.

9. Нажмите на кнопку «Сохранить» для сохранения настроек;

нажмите на кнопку «Отказаться» для возврата в панель администрирования без сохранения внесенных изменений.

Входящие E-mail Используйте данный раздел для управления групповыми учетными записями электронной почты, а так же для управления учетными записями, которые используются для обработки возвращаемой поступившие электронные письма в рамках одной учетной записи и распределять их между сотрудниками вашей организации для дальнейшей обработки. Данная учетная запись может быть полезна в том случае, когда письма адресованы не конкретному сотруднику, а направлены на один из стандартных электронных адресов вашей sales@example.com. Впоследствии, письма из данных почтовых SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты ящиков могут быть распределены по определенному алгоритму между сотрудниками организации.

Учетные записи для обработки возвращаемой почты. Данные учетные записи хранят письма, возвращенные после неудачной рассылки, как правило по причине указания неверного электронного адреса получателя. Вы можете либо создавать данные учетные записи для каждой рассылки в отдельности, либо создать одну общую учетную запись для всех рассылок. Система помечает каждое возвращаемое письмо специальным идентификатором, который позволяет уточнить принадлежность данного письма к той или иной Создание обращений из входящих писем При создании групповой учетной записи вы можете настроить е таким образом, что на основе входящих писем в системе будут автоматически создаваться соответствующие Обращения. В этом случае тема Обращения будет повторять тему, а описание — текст входящего письма. При этом письмо будет автоматически связано с созданным Обращением и будет доступно в соответствующей субпанели Формы просмотра данного Обращения.

автоматического ответа для извещения отправителей о том, что их письма были успешно получены.

Вы также можете настроить специальный шаблон для извещения отправителей о том, что на основе присланного письма было создано соответствующее Обращение. В тему письма на основе данного шаблона будет добавлен номер созданного Обращения. Тема письма с номером Обращения будет формироваться с учетом информации, введенной в поле «Макрос для Обращений». При отправке письма из Формы просмотра Обращения, в теме письма появится соответствующий текст с номером текущего Обращения;

отправленное письмо будет автоматически связано с созданным Обращением и будет доступно в соответствующей субпанели Формы просмотра данного Обращения.

Поле «Макрос для Обращений» содержит стандартный текст [CASE:%1]. Вы можете изменить любую часть данного выражения кроме текста «%1». Например, данное выражение может выглядеть следующим образом: [ОБРАЩЕНИЕ №%1] Настройки групповой учетной записи В панели администрирования выберите раздел «Входящие Email». В меню модуля выберите пункт «Создать групповую SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты В подразделе «Информация об учетной записи» заполните Имя. Введите название учетной записи.

Сервер входящей почты. Введите адрес сервера входящей почты.

Протокол почтового сервера. Из выпадающего списка выберите «IMAP» и заполните поля «Проверяемые папки», «Удаленные» и Статус. Из выпадающего списка выберите соответствующий статус.

Пользователи могут просматривать письма только активной учетной Имя пользователя. Введите имя(логин) пользователя.

Пароль. Введите пароль пользователя.

Порт. Введите порт почтового сервера.

Использовать SSL. Отметьте данный параметр при использовании протокола Secure Socket Layer (SSL) при подключении к почтовому В подразделе «Параметры обработки почты» заполните От имени. Укажите, от чьего имени будет отправляться письмо.

С адреса. Укажите, с чего адреса будет отправляться письмо.

Ответить на имя. Введите имя получателя возвращаемых писем.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Ответить на адрес. Введите адрес получателя возвращаемых Разрешить пользователям отправлять письма, используя в качестве адреса для ответа данные поля От: Отметьте эту опцию, если хотите, чтобы имя и адрес редактируемой групповой учетной записи появлялось в поле «От» при отправке писем.

Автоматически импортировать E-mail. Выберите данный параметр для автоматического импортирования в систему всех Создать Обращение из E-mail. Выберите данный параметр для автоматического создания Обращений из входящих писем. При выборе данного параметра необходимо выбрать алгоритм назначения ответственного.

Алгоритм назначения ответственного. Данный параметр доступен только при выборе предыдущего параметра. При циклическом назначении Обращения будут последовательно назначаться всем пользователям. В противном случае Обращения будут назначаться наименее занятому пользователю, имеющему самую короткую очередь назначенных Обращений.

Шаблон автоответа при создании нового Обращения. Данный параметр доступен только при создании Обращения из E-mail. Вы можете использовать данный шаблон для информирования отправителей о том, что на основании их писем были созданы соответствующие Обращения. Вы можете использовать как существующие шаблоны, так и создавать свои собственные. В теме письма, созданного на основе данного шаблона, всегда будет присутствовать номер автоматически созданного Обращения.

Дополнительная информация о создании шаблонов электронных писем находится в разделе ‘Создание шаблонов электронных писем’ Шаблон автоматического ответа. Используйте данный шаблон в том случае, если вы хотите информировать пользователей о том, что их письма были успешно получены. Для этой цели вы можете использовать как существующие шаблоны, так и создавать свои Если указаны оба вышеописанных шаблона, то письма будут создаваться только на основе шаблона для автоответа при создании нового Обращения.

Не отправлять автоответ на этот домен. Домен, на который не будут отправляться письма автоматического ответа. В данном поле как правило указывается ваш собственный домен, дабы не рассылать автоматические ответы сотрудникам вашей организации.

Ограничение количества автоответов. Укажите максимальное количество автоматических ответов, отправляемых на уникальный SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты При необходимости нажмите на кнопку «Тест настроек» для проверки правильности указанных значений.

Для сохранения настроек нажмите на кнопку «Сохранить».

Настройки учетной записи для обработки возвращаемой В панели администрирования выберите раздел «Входящие Email». В меню выберите пункт «Создать учетную запись для Заполните все необходимые поля как это было указано выше При необходимости нажмите на кнопку «Тест настроек» для Для сохранения настроек нажмите на кнопку «Сохранить».

Управление групповыми учетными записями и учетными записями для обработки возвращаемой почты Для просмотра подробной информации об учетной записи нажмите на е названии в списке учетных записей.

Для активации или деактивации нескольких учетных записей – воспользуйтесь панелью массового обновления в нижней части Для редактирования учетной записи воспользуйтесь кнопкой «Править», расположенной в левом верхнем углу Формы просмотра Для дублирования информации об учетной записи нажмите на кнопку «Дублировать». Дублирование является удобным способом быстрого создания схожих записей, Вы можете изменить продублированную информацию с целью создания новой учетной Для удаления учетной записи воспользуйтесь кнопкой «Удалить» в Форме списка или в Форме просмотра учетной записи. Для удаления нескольких учетных записей – в Форме списка отметьте необходимые записи и нажмите на кнопку «Удалить».

Параметры рассылки E-mail Основная настройка параметров рассылки производится в модуле «Маркетинг». В панели администрирования вы можете изменить некоторые стандартные значения, а именно: количество писем, отправляемых одномоментно при пакетной рассылке, расположение файлов трекера маркетинговой кампании, а также указать, хотите ли вы сохранять копии сообщений рассылки.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Для настройки параметров почтовых рассылок выполните 1. В меню модуля «Маркетинг» выберите пункт «Настройка Email».

2. В подразделе «Параметры E-mail» заполните следующие Отправка почты с помощью. Выберите почтовый протокол.

От (адрес). Электронный адрес отправителя.

Сервер исходящей почты. Введите имя сервера исходящей почты.

SMTP-порт. Введите порт сервера исходящей почты.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Использовать SMTP-аутентификацию?. При использовании SMTP-аутентификации отметьте данный параметр и заполните SMTP-логин. Логин пользователя.

SMTP-пароль. Пароль пользователя.

Включить SMTP over SSL/TLS: При необходимости выберите соответствующий протокол из выпадающего списка.

В подразделе «Параметры массовой рассылки» заполните следующие поля (как было указано выше – эти значения могут быть настроены заранее в панели администрирования):

Количество писем, отправляемых одномоментно при пакетной рассылке. Введите максимальное количество писем, отправляемых одномоментно при пакетной рассылке.

Расположение файла трекера маркетинговых кампаний. Для отслеживания активности проводимой маркетинговой кампании, а также для отписки адресатов от рассылок система использует несколько файлов. Если Sugar установлен на сервере, который доступен из интернета – оставьте настройки по умолчанию. Если система установлена на сервере, который расположен за файерволом – выберите параметр «Задатся вручную» и укажите в поле путь к внешнему веб-серверу. Создайте ссылку index.php (для обработки запросов трех различных типов точек входа:

campaign_trackerv2, removeme и image) и расположите е по указанному пути. Данная ссылка должна указывать на оригинальный файл index.php, расположенный в корневой папке Сохранять копии сообщений рассылок. По умолчанию копии сообщений рассылок НЕ сохраняются. Сохраняется только шаблон сообщения и переменные, необходимые для воссоздания Если вы все же решите хранить копии сообщений рассылок, то учтите, что вся информация будет храниться в базе данных системы, что значительно увеличит е объем и снизит производительность.

Поэтому не рекомендуется использовать данный параметр без явной 3. После заполнения необходимых полей нажмите на кнопку «Далее» для перехода к настройке учетной записи для SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты 4. Для создания учетной записи для возвращаемой почты отметьте параметр «Создать новую учетную запись».

5. Введите необходимую информацию как это описано в разделе ‘Настройки групповой учетной записи’ на стр. 231 и нажмите на кнопку «Далее». Будет отображена страница с 6. Для сохранения настроек и создания учетной записи для возвращаемой почты нажмите на кнопку «Сохранить». Для возврата на основную страницу модуля «Маркетинг» без сохранения указанных настроек нажмите на кнопку Для настройки стандартных параметров рассылки E-mail в панели администрирования перейдите к разделу «Параметры рассылки Email» и выполните необходимые настройки.

Управление очередью E-mail Данный раздел используется для просмотра, отправки и удаления почтовых рассылок, находящихся в очереди на отправку. Процесс отправки будет запущен только по прошествии указанной даты/времени начала рассылки. После запуска рассылки в модуле «Маркетинг» можно просматривать статистику выполняемой рассылки, такую как дату отправки рассылки, количество попыток Используйте соответствующие задания планировщика как для запуска ночных массовых рассылок писем, так и для проверки почтовых ящиков для возвращаемых писем. За более подробной информацией обратитесь к разделу ‘Планировщик’ на стр. 205.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Администрирование электронной почты Для управление очередью E-mail выполните следующее:

соответствующие рассылки и нажмите на кнопку «Разослать 2. Для удаления рассылки выберите соответствующую запись в 3. Для поиска рассылки введите либо название искомой рассылки, либо имя, либо электронный адрес получателя и Инструментарий разработчика Панель отображает инструменты как для создания новых модулей, так и для работы с уже существующими модулями:

‘Конструктор модулей’ на стр. 239.

‘Загрузчик модулей’ на стр. 245.

‘Настройка отображения закладок и субпанелей’ на стр. ‘Переименование закладок’ на стр. 277.

‘Редактор комбобоксов’ на стр. 279.

Для создания новых модулей служит Конструктор модулей, для работы с уже существующими — Студия. Для создания связи между модулями обратитесь к разделу ‘Создание связей’ на стр. 268.

После создания модуля в Конструкторе вы можете опубликовать его как в текущем экземпляре системы, так и в других экземплярах Sugar, SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Инструментарий разработчика используя Загрузчик модулей. Более подробная информация описана в разделе ‘Загрузчик модулей’ на стр. 245.

Конструктор модулей Используйте Конструктор модулей для создания новых модулей Для создания нового модуля выполните следующее:

1. Создайте пакет, в котором будет размещаться новый модуль. В пакете могут размещаться несколько модулей.

2. Создайте модуль, используя для этого один из содержащихся в Базовый. Шаблон содержит такие поля как ID, Дата создания, ФИО создавшего запись и т.д. Используйте этот шаблон для создания модуля Компания. Шаблон содержит такие специфические для организаций поля как Название организации, Отрасль, Адрес и т.д. Используйте этот шаблон для создания модуля аналогичного модулю «Контрагенты».

Документ. Шаблон содержит такие специфические для документов поля как Название файла и Тип документа. Используйте этот шаблон для создания модуля аналогичного модулю «Документы».

Описание. Шаблон содержит такие поля как ID, Описание и ФИО создавшего запись. Используйте этот шаблон для создания модулей аналогичным модулям «Обращения» и «Ошибки».

Персона. Шаблон содержит такие специфические для клиентов поля как Приветствие, Должность, ФИО, Адрес, Номер телефона.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Инструментарий разработчика Используйте этот шаблон для создания модулей аналогичным модулям «Контакты» и «Предварительные контакты».

Сделка. Шаблон содержит такие специфические для сделки поля как Источник предварительного контакта, Стадия сделки, Вероятность и т.д. Используйте этот шаблон для создания модуля аналогичного существующие поля создаваемого модуля.

4. При необходимости настройте макеты Формы списка, Формы просмотра, Формы редактирования, макеты панелей поиска, 5. При необходимости создайте связи между новым и существующими модулями. Стандартные модули системы как правило имеют несколько связей с другими модулями, поэтому при создании нового модуля у вас есть возможность создания необходимых связей с существующими модулями системы.

С созданным пакетом вы также можете выполнить следующие Опубликовать. Даная опция позволяет распространить пакет среди заинтересованных лиц. Система создает zip-архив, который вы можете сохранить и распространить среди заинтересованных лиц. Впоследствии пакет может быть установлен в систему при помощи Загрузчика модулей.

После установки пакета в систему, вы можете при необходимости изменить установленные модули при помощи Студии.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Инструментарий разработчика Установить. Даная опция позволяет сразу установить пакет и сделать его доступным всем пользователям системы. После установки пакета в систему, вы можете при необходимости изменить установленные модули при помощи Студии.

Обратите внимание: если вы измените установленный модуль в Студии, а затем опять установите пакет из Конструктора модулей, то следующая информация будет утеряна:

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

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

Созданные связи будут утеряны, соответствующие таблицы будут удалены из базы данных.

Экспорт. Даная опция создана для разработчиков. Система распространить среди разработчиков системы. При помощи Загрузчика модулей пакет может быть загружен в систему и при необходимости доработан. Доступ к модулям пакета возможен только через Конструктор модулей, т.о. обычные пользователи системы смогут получить доступ к новым модулям только после 1. В панели администрирования перейдите к разделу «Студия» и нажмите на ссылку «Конструктор модулей».

2. Выберите пункт «Новый пакет»

3. Введите латиницей название и ключ пакета и нажмите на кнопку Система обновит страницу, и вам станут доступны следующие кнопки для работы с созданным пакетом: «Сохранить», «Дублировать», «Установить», «Опубликовать», «Экспорт» и «Удалить».

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Инструментарий разработчика Автор. Введите ваше имя как имя создателя пакета.

Ключ. Введите уникальный буквенно-цифровой ключ для идентификации модулей с одинаковыми названиями. Система автоматически добавит данный ключ в качестве префикса к названиям всех классов, директорий и таблиц.

5. Нажмите «Сохранить» для сохранения пакета 6. После сохранения пакета возможно создание его копии, для этого нажмите на кнопку «Дублировать». Система сохранит копию текущего пакета, добавив «1» к его названию.

7. Нажмите на кнопку «Опубликовать», если требуется публикация 8. Нажмите на кнопку «Установить», если требуется установка 9. Нажмите на кнопку «Экспорт», если требуется сохранить копию исходного кода пакета в виде zip-архива.

Для создания модуля выполните следующее:

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Инструментарий разработчика Нажмите на значке «Новый модуль» и заполните следующие поля:

Название модуля. Введите техническое название модуля.

Надпись. Введите название, которое будет отображаться на Импортирование. Отметьте данный параметр, если вы хотите разрешить импорт внешних данных в модуль.

Панель закладок. Отображение данного модуля в панели закладок системы. Данный параметр установлен по умолчанию.

Тип. Выберите шаблон модуля.

Нажмите на кнопку «Сохранить» для сохранения модуля и добавления После этого добавленный в пакет модуль будет доступен в левой части Конструктора модулей в разделе «Пакеты».

Раздел «Пакеты» отображает все доступные пакеты с содержащимися в них модулями. Внутри каждого модуля отображаются все доступные поля, надписи, связи, макеты и субпанели модуля. Нажмите на соответствующем элементе для просмотра подробностей. При необходимости вы можете отредактировать существующие макеты форм, добавить новые поля, создать новые связи между новым и существующими модулями SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Инструментарий разработчика Более подробная информация о настройке макетов форма находится в разделе ‘Редактирование макетов’ на стр. 258.

Более подробная информация о создании новых полей находится в разделе ‘Создание и редактирование полей’ на стр. 252.

Более подробная информация о создании связей находится в разделе ‘Создание связей’ на стр. 268.

Для редактирования разделов (Dashlets) выполните следующее:

В левой части Конструктора раскройте соответствующий модуль и перейдите к разделу «Макеты».

Выберите пункт «Раздел (Dashlet)» или нажмите на соответствующий макет в центральной части страницы. Вам будут доступны для редактирования Форма основных настроек и Форма фильтра выбранного раздела.

Для редактирования Формы основных настроек нажмите на пункт «Форма основных настроек раздела» и следуйте шагам, описанным в разделе ‘Редактирование Формы списка’ на стр. 260.

Для редактирования Формы фильтра нажмите на пункт «Форма фильтра раздела» и следуйте шагам, описанным в разделе ‘ Редактирование Формы поиска’ на стр. 264.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Инструментарий разработчика Для установки, публикации или экспорта пакета выполните В конструкторе модулей выберите необходимый макет и нажмите на одну из кнопок: «Опубликовать», «Установить» или «Экспорт».

При публикации или экспорте система сохраняет пакет в качестве zipархива, который в дальнейшем может быть установлен в другую систему. Более подробная информация находится в разделе ‘Загрузчик При необходимости вы можете удалить пакет. При этом все содержащиеся в пакете файлы также будут удалены. Если вы хотите удалить пакет из системы уже после его публикации – воспользуйтесь Загрузчиком модулей. При удалении пакета вы можете на выбор либо сохранить, либо удалить из базы данных связанные с удаляемым Перед установкой новой версии аналогичного пакета нет необходимости удалять существующий пакет. Файлы обновленной версии заменят все существующие файлы пакета.

Загрузчик модулей Используйте Загрузчик модулей для установки, обновления, временного отключения и удаления модулей системы, языковых В Конструкторе модулей вы можете создавать собственные модули, содержащиеся в т.н. пакетах. При установке пакета содержащиеся в нем модули становятся доступны другим пользователям системы. При публикации или экспорте пакета вы фактически сохраняете его в виде zip-архива и в дальнейшем при необходимости можете загружать его в другие копии системы, используя Загрузчик модулей. Более подробная информация о работе с пакетами содержится в разделе ‘Конструктор Для установки модуля выполните следующее:

1. В панели администрирования перейдите к разделу «Студия»

2. Если пакет уже установлен, то он отображается в верхней части панели загрузчика и доступен другим пользователям SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Инструментарий разработчика системы. Вы можете временно отключить или совеем удалить его из системы, нажав на соответствующие кнопки.

3. Для установки нового модуля в нижней части панели расположение загружаемого zip-архива.

4. В диалоговом окне нажмите на кнопку «Открыть».

Путь к загружаемому архиву отобразится в поле загрузчика.

7. Если в процессе установки отображается лицензионное При успешной установке появится соответствующее сообщение, SugarCRM CE — 6.2 – Руководство пользователя и администратора 8. Установленный модуль станет доступен пользователям Включение/отключение установленного модуля 1. Нажмите на кнопку «Отключить», расположенную справа от 2. Если в процессе отключения отображается лицензионное соглашение – Нажмите на кнопку «Принять».

3. Появится соответствующее сообщение, например:

Нажмите на кнопку «Возврат на страницу загрузки модулей».

расположенную справа от названия модуля.

Деинсталляция модуля Система отобразит соответствующее сообщение, в котором также может быть предложено сохранить или удалить из базы Нажмите на кнопку «Вперед» для деинсталляции модуля.

Студия позволяет настраивать существующие модули путем добавления новых и редактирования существующих полей, надписей, макетов форм и связанных субпанелей. После настройки вы можете экспортировать измененные модули и при необходимости загрузить их в другие системы, используя для этой SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Инструментарий разработчика В левой части основной страницы студии отображаются все пользовательские. Все элементы, принадлежащие тому или иному модулю, располагаются в папке с названием соответствующего модуля в виде иерархической древообразной структуры. Вы можете воспользоваться значком (+) для детального просмотра элементов В правой части основной страницы студии отображается та же самая информация, но в виде отдельных значков.

В нижней части основной страницы студии расположены кнопки «Главная», «Студия», «Конструктор модулей» и «Редактор комбобоксов», позволяющие быстро перейти в необходимый раздел Редактирование модулей В модуле вы можете добавлять/редактировать поля, и выпадающие списки (комбобоксы), а также изменять существующие надписи. Вы SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Инструментарий разработчика также можете редактировать макеты форм и настраивать связанные с модулем субпанели. Внесенные в модуль изменения не будут доступны другим пользователям системы до тех пор, пока макеты модуля не будут опубликованы. Опубликованные модули также будут доступны для редактирования в Студии.

При необходимости вы можете сбросить те или иные настройки модуля, приведя их к стандартному виду. Для этого воспользуйтесь соответствующей кнопкой в верхней левой части страницы. В процессе сброса настроек у вас будет возможность выбрать необходимые Для редактирования модуля выполните следующее:

1. В студии выберите редактируемый модуль.

SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Инструментарий разработчика На рисунке изображен модуль «Контрагенты».

2. Выберите один из следующих компонентов модуля:

Надписи: Выберите данный компонент для редактирования надписей. За дополнительной информацией обратитесь к разделу »Редактирование надписей’ на стр. 250.

Поля: Выберите данный компонент для создания пользовательских и редактирования пользовательских и стандартных полей. За дополнительной информацией обратитесь к разделу ‘Добавление пользовательских полей’ на стр. 252.

Связи: Выберите данный компонент для просмотра существующих и создания новых связей между модулями. После создания связи ее необходимо установить, чтобы она была доступна остальным пользователям. За дополнительной информацией обратитесь к разделу ‘Создание связей’ на стр. 268.


Макеты: Выберите данный компонент для редактирования макетов Форм списка, Форм просмотра, Форм редактирования, Форм быстрого ввода, Форм поиска, а так же Всплывающих форм. За ‘Редактирование макетов’ на стр. 258.

Субпанели: Выберите данный компонент для редактирования субпанелей модуля. За дополнительной информацией обратитесь к разделу ‘Редактирование субпанелей’ на стр. 256.

3. После внесения необходимых изменений нажмите на кнопку «Сохранить» или «Сохранить и установить».

Редактирование надписей Используя редактор надписей, вы можете изменять надписи полей, кнопок, ссылок, заголовки модулей и всплывающих окон. Вы также SugarCRM CE — 6.2 – Руководство пользователя и администратора Администрирование системы – Инструментарий разработчика можете менять стандартные подписи полей для всех установленных языковых пакетов. Каждый модуль отображает в редакторе список содержащихся в базе данных полей и соответствующих им надписей пользовательского интерфейса.

Использование редактора надписей вместо редактора макетов при изменении множества надписей значительно сокращает время процесса редактирования.

Для изменения надписи выполните следующее:

1. В необходимом модуле выберите компонент «Надпись».

На странице отобразится список содержащихся в базе данных полей и соответствующих им надписей.

2. Если вы хотите изменить надписи другого установленного языкового пакета – выберите соответствующий язык из выпадающего списка, расположенного в верхней части страницы 3. Перейдите к необходимой надписи и введите новое значение.

4. Нажмите на кнопку «Сохранить и установить».

5. Для быстрого перехода к другому компоненту Студии вы можете воспользоваться цепочкой навигации, расположенной непосредственно над кнопкой «Сохранить и установить».

«К 26 Карпенко Ю. А. Названия звездного неба,— M.J Наука, І98І.—184 с. (Сер. Литературоведение о языкознание*) вебосаы Книга поеввщена собственным именам космически объектов—от Млечного Пуія и созвездии ао асте­ роидов и спутников плапет. В космических названи ях отразилась многовековая история познания чело ярком основное внимание уделяет лянівиеіическому ана­ лизу собственных инеи космических тел. 46.2 Отпетстееппый редактор доктор филологических нак А. В. СУПЕГ-АНСНДЯ >. »

«языкозНаНие УДК 811.11’276.1 аНТропоцеНТризм VS аНТропокосмизм: к проблеме меТода в лиНгвокУльТУрологии а.а. беляцкая аннотация. Поднимается проблема метода лингвокультурологических исследований текста. Обосновываются введение антропокосмистского подхода, его острая актуальность и открывающиеся вместе с ним перспективы для лингвокультурологической теории и практики. ключевые слова: методы лингвокультурологии; антропоцентристский и антропокосмистский подходы; категории и критерии. »

«Немировская Анна Валентиновна кандидат социологических наук, кандидат филологических наук Почтовый адрес: 660001, г. Красноярск, а/я 16168 Тел. +7 913-451-31-30, (391) 244-98-56, 244-36-41 E-mail: annanemirov@gmail.com Web: http://ipps.institute.sfu-kras.ru/node/298 http://www.lssi.hse.spb.ru/nemirovskaja Дата рождения 12 сентября 1981 г. Опыт работы: Национальный исследовательский университет – Высшая школа экономики, СанктПетербург. Лаборатория сравнительных социальных исследований под. »

«Андрей ПАРШИН ТЕОРИЯ И ПРАКТИКА ПЕРЕВОДА ГЛАВА 1 ИСТОРИЯ НАУКИ О ПЕРЕВОДЕ Среди многочисленных сложных проблем, которые изучает современное языкознание, важное место занимает изучение лингвистических аспектов межъязыковой речевой деятельности, которую называют переводом или переводческой деятельностью. Перевод — это несомненно очень древний вид человеческой деятельности. Как только в истории человечества образовались группы людей, языки которых отличались друг от друга, появились и билингвы. »

«Московский государственный университет имени М.В. Ломоносова Филологический факультет КОЛЯСЕВА АЛЕНА ФЕДОРОВНА ТЕРМИНОЛОГИЯ В ЗЕРКАЛЕ ОБЫДЕННОГО И ПРОФЕССИОНАЛЬНОГО ЯЗЫКОВОГО СОЗНАНИЯ 10.02.01 – Русский язык Диссертация на соискание ученой степени кандидата филологических наук Москва 2014 1 ВВЕДЕНИЕ.. 4 ГЛАВА 1. ЯЗЫКОВОЕ СОЗНАНИЕ: СТРУКТУРА И ТИПЫ. 27 Языковое сознание: история вопроса. 1.1. 29 Структура языкового сознания: поверхностный и глубинный 1.2. уровни.. Метаязыковое сознание и его. »

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ Учебно-методическое объединение по гуманитарному образованию УТВЕРЖДАЮ Первый заместитель Министра образования Республики Беларусь РегйстрацййНййіІСо ТД-,^. ^НІтті. ОСНОВНОЙ ИНОСТРАННЫЙ язык (ИТАЛЬЯНСКИЙ) Типовая учебная программа для высших учебных заведений по специальности 1-21 05 06 Романо-германская филология СОГЛАСОВАНО СОГЛАСОВАНО Председатеі Начальник Управления высшего и методичек ия среда^^нециального образования по^ анию ^ І і л і М ^ ^ ‘. »

«Книготорговая классификация Автор: М.Д. КРЫЛОВА к.и.н., Б.Д. КОРКМАЗОВ Ассортимент издательской и прочей продукции, с которым имеют дело книготорговцы, очень многообразен, сложен и динамичен. Как известно, в настоящее время в России ежегодно выходит около 60 тыс. названий книг. При этом с учетом книг прошлых лет выпуска и зарубежных изданий на книжном рынке находится свыше 100 тыс. названий. Кроме того, книготорговцы и издатели должны знать, что выходило ранее и что будет выпущено в ближайшее. »

«Федеральное агентство по образованию ГОУ ВПО Российский государственный профессиональнопедагогический университет Уральское отделение Российской академии образования Академия профессионального образования Т. В. Леонтьева ИНТЕЛЛЕКТ ЧЕЛОВЕКА В РУССКОЙ ЯЗЫКОВОЙ КАРТИНЕ МИРА Научный редактор доктор филологических наук Е. Л. Березович Рекомендовано Учебно-методическим объединением по профессионально-педагогическому образованию в качестве монографии для слушателей институтов и факультетов повышения. »

«Воронежский государственный университет Центр коммуникативных исследований Кафедра славистики Белградского университета Кафедра русистики Варшавского университета Коммуникативное поведение Вып.28 Коммуникативное поведение славянских народов Русские, украинцы, белорусы, поляки, сербы Варшава 2007 Сборник представляет собой очередную, двадцать восьмую публикацию Центра коммуникативных исследований Воронежского университета в рамках проекта Коммуникативное поведение и третий тематический сборник. »

«8 класс УЧЕБНИК ДЛЯ ОБЩЕОБРАЗОВАТЕЛЬНЫХ УЧРЕЖДЕНИЙ Рекомендовано Министерством образования и науки Российской Федерации 34-е издание МОСКВА ПРОСВЕЩЕНИЕ 2011 УДК 373.167.1:811.161.1 ББК 81.2Рус-922 Р89 Авторы: С. Г. Бархударов, С. Е. Крючков, Л. Ю. Максимов, Л. А. Чешко В переработке 25-го издания учебника принимали участие Н. А. Николина, К. И. Мишина, В. А. Фёдорова Учебник получил положительные заключения Российской академии наук (№ 2-10106-5215/501 от 02.06.06) и Российской академии. »

«Николай Федорович Замяткин pismoavtoru@hotmail.com или zamyatkin-nikolay@yandex.ru zamyatkin.com/forum/ ВАС НЕВОЗМОЖНО НАУЧИТЬ ИНОСТРАННОМУ ЯЗЫКУ Краткое содержание трактата Честная до последней запятой книга, которая немедленно стала классикой жанра и обязательным чтением для каждого, кто хоть в какой-то мере интересуется языками. Парадоксальная книга, неумолимо разрушающая миф за мифом, небылицу за небылицей, заблуждение за заблуждением. Книга, освобождающая вас от пут широко распространенных. »

«Владимир Антонов ЭКОПСИХОЛОГИЯ: Гармония общения с природой. Психическая саморегуляция. Духовное сердце. Духовное совершенствование. Человек и Бог. Судьба. Смысл жизни. Воспитание детей. Искусство. Чакры. Кундалини. Экопсихологи познают и изучают Бога New Atlanteans 2007 ISBN 978-1-897510-02-5 “New Atlanteans” 1249 Birchview Rd Lakefield, Ontario K0L 2H0, Canada Printed by Lulu http://stores.lulu.com/spiritualheart В написанной простым, доступным для всех языком книге учёного-биолога Владимира. »

«УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС СОВРЕМЕННЫЙ РУССКИЙ ЯЗЫК: МОРФЕМИКА И СЛОВООБРАЗОВАНИЕ: 1) ПРОГРАММА, 2) ПЛАНЫ СЕМИНАРСКИХ ЗАНЯТИЙ, 3) РАБОЧАЯ ТЕТРАДЬ ДЛЯ КОНТРОЛЬНЫХ РАБОТ 1) ПРОГРАММА УЧЕБНОГО КУРСА Программа дисциплины СОВРЕМЕННЫЙ РУССКИЙ ЯЗЫК: МОРФЕМИКА И СЛОВООБРАЗОВАНИЕ составлена в соответствии с требованиями к обязательному минимуму содержания и уровню подготовки дипломированного специалиста (бакалавра) по циклу базовых профессиональных дисциплин по направлению ФИЛОЛОГИЯ, а также задачами. »

«Издательство Открытый Мир представляет серию Самадхи, в рамках которой издаются книги по медитации, философии и этике буддизма. Готовятся к публикации переводы с тибетского языка классических трактатов буддизма Махаяны, работы индийских, тибетских и современных западных авторов. Буддийский монах и учитель с более чем двадцатипятилетним стажем, геше Майкл Роуч предлагает вашему вниманию буддийский взгляд на йогу в своей новой книге о конкретном комплексе упражнений, делающем практикующих. »

«ИНСТИТУТ ЯЗЫКОЗНАНИЯ РАН БЛАГОВЕЩЕНСКИЙ ГОСУДАРСТВЕННЫЙ ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ ЛАКУНЫ В ЯЗЫКЕ И РЕЧИ Сборник научных трудов Под ред. проф. Ю.А. Сорокина, проф. Г.В. Быковой Благовещенск 2003 ББК 81.002.3 +81.001.6 Печатается по решению редакционноиздательского совета Благовещенского Л19 государственного педагогического университета Лакуны в языке и речи: Сборник научных трудов /Под ред. проф. Ю.А. Сорокина, проф. Г.В. Быковой. — Благовещенск: Изд-во БГПУ, 2003. – 257 с. В сборник включены. »

«Е.В.Падучева НЕОПРЕДЕЛЕННОСТЬ КАК СЕМАНТИЧЕСКАЯ ДОМИНАНТА РУССКОЙ ЯЗЫКОВОЙ КАРТИНЫ МИРА Идея о том, что язык навязывает его носителю определенную картину мира, высказанная в свое время Вильгельмом фон Гумбольдтом (“.each language draws a circle around the people to whom it adheres which is possible for an individual to escape only by stepping into a different one”, цит. по Wierzbicka 1991: 3), была подхвачена Сэпиром, а потом наполнена выразительным содержанием в работах Уорфа, который. »

«Вялова Ольга Викторовна e-mail-vyalowa.olga@yandex.ru skype-vyalova73 Время связи по скайпу- понедельник 18часов 30 минут 9 класс. Русский язык. Для подготовки к контрольным тестам (тесты прилагаются) по русскому языку в 9 классе рекомендуется использовать учебник: Русский язык, 9 класс (авторы С.Г. Бархударов, С.Е. Крючков, Л.А. Чешко, М. Просвещение 2005г. и более поздние издания). Подготовку к изложению рекомендуется проводить по книге Сборник текстов для проведения письменного экзамена по. »

«Учреждение Российской академии наук ИНСТИТУТ ЯЗЫКОЗНАНИЯ РАН ЛИНГВИСТИКА И МЕТОДИКА ПРЕПОДАВАНИЯ ИНОСТРАННЫХ ЯЗЫКОВ Периодический сборник научных статей Электронное научное издание Выпуск 3 Москва 2011 1 Редакционная коллегия В.А.Виноградов М.Е.Алексеев В.З.Демьянков П.С.Дронов А.В.Дыбо Е.Р.Иоанесян (отв. редактор) Д.Б.Никуличева Н.М.Разинкина Н.К.Рябцева К.Я.Сигал И.И.Челышева 2 Проблемы описания языка С.Ю. Бочавер (ИЯз РАН) S. Boaver (Institute of Linguistics, Russian Academy of Sciences). »

«203 Тельминов В. Г. Военный закон Г. Гракха и магистратура трибунов Армия и военные реформы В. Г. Тельминов Военный закон Г. Гракха и магистратура военных трибунов. Реформаторская деятельность братьев Гракхов, воздействие которой на общественно-политическую ситуацию в Риме II–I в. до н. э. трудно переоценить, составляет одну из самых важных страниц истории Римской Республики. Общепризнанной является значимость исторического наследия Гракхов для реконструкции политической культуры Рима как в. »

«А.И. ВЛАСЕНКОВ Л.М. РЫБЧЕНКОВА усскии зык БАЗОВЫЙ УРОВЕНЬ ПРОСВЕЩЕНИЕ ИЗДАТЕЛЬСТВО А.И. ВЛАСЕНКОВ Л.М. РЫБЧЕНКОВА 10—11 классы Учебник для общеобразовательных учреждений Б АЗОВЫЙ УРОВЕНЬ Рекомендовано Министерством образования и науки Российской Федерации Москва Просвещение 2009 УДК 373.167.1:811.161.1 ББК 81.2Рус-922 В58 Учебник получил положительные заключения Российской академии наук (№ 10106-5215/473 от 03.10.08) и Российской академии образования (№ 01-5/7д-166 от 07.07.08) Власенков А. И. »

© 2014 www.kniga.seluk.ru — «Бесплатная электронная библиотека — Книги, пособия, учебники, издания, публикации»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.

Php 4 2 руководство пользователя

Предисловие переводчика.

Некоторое время назад мне потребовалось написать небольшой скрипт на языке PHP для Web-странички. Поскольку до того момента мне не приходилось встречаться с PHP, я начала искать в Интернет руководство по этому языку и первым делом, естественно, обратилась на сайт PHP Club (http://phpclub.unet.ru/index.php3?m=links). К счастью, я знала о существовании этого сайта. К моему удивлению обнаружилось, что документации по PHP на русском языке очень мало. Да что там мало, можно сказать, что ее нет вообще, ведь практически единственное русскоязычное руководство (http://www.webclub.ru/materials/php/) относится к версии 2 этого языка (а сейчас уже вышла версия 4.0.3).

Этот факт тем более удивителен, что язык PHP используется на массе серверов в Интернет. К сожалению, за неимением статистической информации не могу указать здесь точный процент, но могу привести такой факт. В ноябре 2000 г. на сайте http://nevod.ru/linux был проведен опрос на тему «На каком языке проще, быстрее и качественнее писать CGI?». В опросе приняло участие 954 респондента (по состоянию на 28.11.00). По результатам опроса PHP оказался на втором месте (после Perl) по популярности среди языков, используемых для создания CGI-скриптов. Perl набрал 334 голоса (35 процентов), а PHP — 232 голоса (24 процента). Все остальные языки, включая C, C++, Delphi и Visual Basic, набрали не более 11 процентов голосов. Конечно, тут надо сделать поправку на то, что опрос проводился на сайте, посвященном ОС Линукс, а значит, результаты опроса могут не совсем правильно отражать реальную картину использования разных языков, но все же эти результаты говорят о том, что PHP достаточно широко используется.

Среди англоязычной документации по PHP в списке ссылок на сервере PHP Club конечно было указано и полное руководство по этому языку (http://phpclub.unet.ru/manual). Но я выбрала для первоначального знакомства с PHP документ, который на PHP Club назван «наиболее удачным описанием PHP» (оригинал статьи Вы можете найти по адресу http://www.builder.com/Programming/PHPIntro/?). А поскольку документации на русском мало, я решила попутно перевести этот документ полностью. Этот перевод я и предлагаю вниманию всех, кого интересует PHP.

Илон Маск рекомендует:  Что такое код printer_draw_rectangle

Кстати говоря, за то время, пока я переводила этот материал, я нашла в Интернет еще пару руководств по PHP на русском языке. Думаю, что Вам пригодятся соответствующие ссылки (для полноты я включила сюда и ссылку на упоминавшееся выше руководство Д.Брэндона ко второй версии PHP):

  • Дик Брэндон. PHP/FI Version 2.0. (http://www.webclub.ru/materials/php/) Перевод Юрия Плетнева.
  • Букварь по PHP и mySQL. (http://www.rusdoc.ru/material/web/about_php_rus_pdf.zip) — pdf-файл. Данный букварь просто поможет вам сделать первые шаги в изучении PHP и способах взаимодействия его с БД MySQL.
  • Shawn Wallace Введение в PHP. (http://spslug.sposad.ru/doc/phpintro.html) Перевод Михаила Крайнова.
  • С.Лосев. Рабочие инструменты сайтостроителя. (http://officesoft.agava.ru/index1.php3?path=articles/php1&ftype=article)
    В этом цикле статей, посвященного современному «сайтостроению», рассказывается о популярной системе MySQL и языке программирования PHP, как с их помощью можно решать задачи, с которыми сталкивается любой разработчик Интернет-сайта — подготовка и отображение новостей, ввод и отображение текстовой информации, поиск на сайте, организация дополнительных сервисов («узнавания» посетителя, форумов, опросов и т.д.).
    Часть 1. Первое знакомство с PHP и MySQL (http://officesoft.agava.ru/index1.php3?path=articles/php1&ftype=article)
    Часть 2. Кругом новости, но как их ввести и отобразить? (http://officesoft.agava.ru/index1.php3?path=articles/php2&ftype=article)
    Часть 3. Статьи для сайта (http://officesoft.agava.ru/index1.php3?path=articles/php3&ftype=article)
    Часть 4. Дополнительные сервисы (http://officesoft.agava.ru/index1.php3?path=articles/php4&ftype=article)

    Поскольку переведенный мной материал не повторяет эти руководства, надеюсь он будет полезен и читателям журнала «Мир ПК».

    PHP — это язык программирования для динамической генерации Web-страниц с помощью скриптов, запускаемых на Web-сервере. Вы создаете страницу с помощью PHP and HTML. Когда посетитель сайта открывает страницу, сервер выполняет включенные в html-код операторы PHP и посылает результат браузеру посетителя, точно так же, как это делается с помощью ASP или ColdFusion. Однако, в отличие от ASP или ColdFusion, PHP является продуктом с открытым исходным кодом (Open Source) и платформенно-независим. PHP работает на Windows NT и многих версиях Unix. Он может быть запущен как модуль в Apache или как исполняемая программа через CGI. В случае запуска в виде модуля Apache, PHP работает особенно легко и быстро. В этом случае отсутствуют накладные расходы, связанные с созданием процессов, поэтому результат выдается быстро, и не требуется настраивать mod_perl для уменьшения расходования памяти сервера.

    Кроме различных операций с содержимым Ваших страниц, с помощью PHP Вы можете формировать HTTP-заголовки, установить cookie, управлять аутентификацией и перенаправить пользователя на другую страницу. PHP предоставляет великолепные возможности по доступу к базам данных (и ODBC), а также интеграцию с различными внешними библиотеками. Это позволяет Вам делать все — от генерации PDF-документов до грамматического разбора в XML.

    Операторы PHP вставляются прямо в Ваши Web-страницы, так что нет необходимости в специальных средах разработки ( > и заканчиваете его тегом ?> . (Вы можете сконфигурировать PHP так, что будут использоваться теги в стиле ASP: или теги вида .) Все, что находится между этими тегами будет интерпретироваться как PHP-код.

    Синтаксис языка PHP подобен синтаксису C и Perl. Вы не должны объявлять переменные до их использования. Легко создаются массивы и хэши (ассоциативные массивы). PHP даже имеет какие-то зачатки объектно-ориентированного программирования, обеспечивая удобный способ организации кода и его инкапсуляции.

    Хотя PHP быстрее всего работает в том случае, когда он встроен в Apache, на Web-сайте PHP имеются инструкции по его установке на Microsoft IIS и Netscape Enterprise Server. Если у Вас еще нет копии программного обеспечения для установки PHP, Вы можете скачать ее с официального Web-сайта (http://www.php.net/). Там же Вы найдете подробное руководство, в котором описаны все функции и особенности PHP.

    Синтаксис PHP

    С основами синтаксиса PHP Вы знакомы. Следующий код

    Имена переменных обозначаются знаком $ . То же самое «Hello, World!» можно получить следующим образом:

    Установка Apache-2.0.46 и PHP-4.3.2

    Эта статья посвящена установке и настройке сервера Apache 2.0.46
    и РНР-4.3.2, как динамического(DSO) модуля. Для начала нужно установить
    Апач. Для этого берем дистрибутив сервера с www.apache.org и
    распаковываем:

    # cd /каталог/куда/вы/положили_файл_дистрибутива
    # tar -zxvf httpd-2.0.46.tar.gz
    # cd ./httpd-2.0.46

    После этого конфигурируем сервер:
    Пример запуска скрипта configure:

    # ./configure —prefix=/usr/local/ —enable-suexec

    где —enable-suexec — разрешение выполнения cgi-скриптов
    от имени пользователя, который этот скрипт создал, а не от имени
    пользователя веб-сервера, т.е. разрешение Setuid.

    Будьте осторожны с этой опцией. Апач по умолчанию не разрешает запуск
    скриптов от имени root, но если вы собираетесь дать пользователям шелл,
    то возможно, что они начнут дефейсить друг друга =))

    Если же шелла нет, то, запустив перл-скрипт без setuid, т.е. с правами
    сервера, теоретически возможно с помощью команд chown, chgrp и chmod +s
    присвоить своему скрипту права другого пользователя.

    Опция —prefix задает каталог для установки сервера. В нашем примере
    это /usr/local/ Это значит, что сервер будет установлен в
    /usr/local/apache2/

    Для просмотра всех доступных опций можно запустить configure с опцией
    —help:

    Для установки РНР, как динамического модуля, нужно чтобы Апач был
    установлен с модулями http_core.c и mod_so.c Они устанавливаются
    по умолчанию, поэтому после того, как мы выполнили configure, можем
    устанавливать сервер:

    # make
    # make install

    Теперь, когда сервер установился, проверим наличие http_core и mod_so:

    В ответ на это, Апач выведет на экран список модулей, с которыми
    он был скомпилирован.
    Среди прочих, должны быть в списке и http_core.c и mod_so.c

    Убедившись, что все в порядке, приступаем к РНР.
    Берем файл дистрибутива, распаковываем его:

    # tar -zxvf php-4.3.2.tar.gz
    # cd php-4.3.2

    Теперь нужно запустить configure. Если у вас установлена база данных MySQL,
    вам нужно запустить скрипт так:

    # ./configure —with-mysql —with-apxs2

    Опция —with-apxs2 исползуется для того, чтобы сконфигурировать РНР, как
    динамический модуль. Если вы все делали так, как написано выше, то с
    вероятностью в 99% configure напишет вам что-то вроде «APXS — not found».
    Чтобы устранить это, нужно выполнить скрипт так:

    # ./configure —with-mysql —with-apxs2=/usr/local/apache2/bin/apxs

    Если же вы ставили Апач версии 1.Х, а не 2.Х, то опция —with-apxs2
    должна выглядеть как —with-apxs

    После того, как конфигурация окончена, можно устанавливать.

    # make
    # make install

    Все, установили. Теперь, нужно немного подправить конфиг Апача.
    Добавим строку

    AddType application/x-httpd-php .php

    Теперь действительно все. РНР работает во всех файлах с расширением .php

    ————————————————————-
    Быстрая установка. Подразумеваем, что ставим апач версии 2.0.46
    в /usr/local/apache2/, РНР версии 4.3.2,у нас установлен MySQL,
    файлы дистрибутивов кладем в /usr/src/
    Итак, команды:

    # cd /usr/src/
    # tar -zxvf httpd-2.0.46
    # cd ./httpd-2.0.46
    # ./configure —prefix=/usr/local/
    # make
    # make install

    Добро пожаловать

    В интернете очень много устаревшей информации, которая приводит к заблуждению, распространению неверных решений и написанию плохого кода у начинающих PHP-разработчиков. Это нужно остановить. PHP: Правильный Путь — легкочитаемое руководство для быстрого ознакомления с правилами эффективного использования PHP, принятыми стандартами написания кода и ссылками на признанные руководства по всему интернету.

    Переводы

    Руководство PHP: Правильный путь уже (или вскоре будет) переведено на множество различных языков:

    Дисклеймер

    В интернете не существует описания каноничного способа использования PHP. Как бы то ни было, этот скромный сайт содержит лучшие решения, доступные варианты и другую полезную информацию. Он направлен на ознакомление начинающих разработчиков с PHP и переосмысление опытными профессионалами свежих идей.

    Это живой документ и он продолжит обновляться более полезной информацией и примерами по мере их появления.

    Как внести вклад

    Помогите сделать этот сайт лучшим ресурсом для начинающих PHP программистов! Помочь используя GitHub

    Расскажите о нас

    Руководство PHP: Правильный путь содержит веб-баннеры, которые вы можете использовать на своём сайте. Окажите поддержку, показав начинающим PHP-разработчикам где они могут найти полезную информацию!

    Начало

    Использование стабильной версии (7.2)

    Если вы только начинаете работу с PHP, убедитесь в том, что вы используете текущую стабильную версию PHP 7.2. За последние несколько лет PHP добился больших успехов, добавив новые возможности.

    Наиболее часто в ближайшем будущем вы будете видеть, что используются версии PHP 5.x, с последней 5.6. Но вы должны попробовать использовать последнюю стабильную версию, если это возможно. Не дайте скромной разнице между числами 5.2 и 5.6 ввести вас в заблуждение, эта разница представляет важные изменения. Если вам нужна функция или пример её использования, вы всегда можете найти документацию на php.net.

    Встроенный веб-сервер

    Вы можете начать изучение PHP без необходимости в установке и конфигурировании полноценного веб-сервера (необходим PHP 5.4 или новее). Для запуска сервера вам необходимо выполнить следующую команду из терминала в корневой папке веб-проекта:

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

    OSX поставляется с предзапакованным PHP, но, в лучшем случае, он немного отстает от стабильной версии. Lion поставляется с PHP 5.3.6 и Mountain Lion имеет 5.3.10.

    Для обновления PHP в OSX вы можете установить его с помощью нескольких пакетных менеджеров, наиболее рекомендуемый из которых php-osx by Liip.

    Другой вариант, скомпилировать самостоятельно, в этом случае убедитесь, что у вас установлен либо Xcode, либо его аналог от Apple “CLI для Xcode”, который можно загрузить с Apple Mac Developer Center.

    В качестве полного набора «всё-в-одном», который включает PHP, веб-сервер Apache и СУБД MySQL, и всё это с хорошим управлением через GUI, попробуйте MAMP.

    Установка в Windows

    PHP для Windows можно получить несколькими путями. Вы можете загрузить установочные файлы и, до недавнего времени, вы могли использовать ‘.msi’ установщик. Начиная с PHP версии 5.3.0 установщик не поддерживается.

    Для изучения и локальной разработки вы можете использовать встроенный в PHP 5.4+ веб-сервер, о конфигурации которого можно не беспокоиться. Если вы предпочитаете сервера «всё-в-одном», которые включают в себя полноценный веб-сервер и MySQL, тогда можете воспользоваться такими инструментами, как Web Platform Installer, Zend Server CE, XAMPP или WAMP, которые помогут быстро развернуть окружение для разработки в Windows. Но, стоит сказать, что эти инструменты будут отличаться от продакшна, так что будьте осторожны и учитывайте эти различия, если вы работаете на Windows и деплоите на Linux.

    Если вам нужно запустить конечную систему на Windows, то IIS7 даст вам лучшую стабильность и производительность. Вы можете использовать phpmanager (плагин для IIS7) для легкого конфигурирования и управления PHP. IIS7 поставляется с встроенным FastCGI, вам нужно просто настроить PHP в качестве обработчика. Для получения помощи и дополнительной информации посетите iis.net.

    Vagrant

    Запуск вашего приложения в разных окружениях на этапе разработки и продакшна может привести к различным багам, которые дадут о себе знать уже непосредственно при работе приложения. Также сложно поддерживать в разных окружениях стабильные версии для всех библиотек, которые используются при работе в команде разработчиков.

    Если вы разрабатываете на Windows и деплоите на Linux (или что-либо отличающееся от Windows) или разрабатываете в команде, вы должны рассмотреть возможность использования виртуальной машины. Это звучит сложно, но, используя Vagrant, вы можете установить простую виртуальную машину всего лишь в несколько шагов. Они могут быть как выполнены вручную, так и с помощью специализированного софта, например, Puppet или Chef, который автоматизирует эту задачу. Использование этого софта гарантирует использование одинаковой конфигурации для нескольких машин, что избавляет вас от необходимости поддержки сложных списков установки. Вы также можете удалить вашу машину, и пересоздать её без большого количества ручных шагов, что делает создание «свежей» виртуалки очень простым.

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

    Стандарты написания кода

    Сообщество PHP является очень большим и разнообразным, сочетая в себе бесчисленное количество библиотек, фреймворков, и различных компонентов. Для PHP разработчика это обычная практика — выбрать несколько из них и соединить в одном проекте. Очень важно придерживаться общих стандартов написания кода (так точно, насколько это возможно) в своём PHP коде, чтобы позволить разработчикам сочетать и использовать различные библиотеки для своих проектов.

    Группа Совместимости Фреймворков предложила и одобрила ряд стилевых рекомендаций, известных как PSR-0, PSR-1 и PSR-2. Не дайте веселым именам смутить вас, эти рекомендации представляют собой набор правил, которых начинают придерживаться такие проекты, как Drupal, Zend, Symfony, CakePHP, phpBB, AWS SDK, FuelPHP, Lithium и другие. Вы можете использовать их при работе над собственным проектом, или в дальнейшем использовать ваш собственный стиль.

    В идеале, вы должны писать PHP код, придерживаясь известных стандартов. Это может быть любая комбинация PSR-ов, или один из стандартов кода, сделанных PEAR или Zend. Это позволит другим разработчикам легко читать и работать с вашим кодом, и приложения, которые используют компоненты, смогут сохранить структуру приложения, даже работая с огромным количеством стороннего кода.

    Вы можете использовать PHP_CodeSniffer чтобы проверить код на соответствие одной из этих рекомендаций, а также плагин для текстовых редакторов, таких как, к примеру, Sublime Text 2 чтобы получить отчёт в реальном времени.

    Используйте PHP Coding Standards Fixer, созданный Фабиеном Потенсьером, для автоматического исправления синтаксиса вашего кода так, чтобы он соответствовал этим стандартам, что спасет вас от исправления каждой проблемы вручную.

    Английский язык является наиболее предпочтительным для всех символических имен и инфраструктуры кода. Комментарии могут быть написаны на любом языке, который будет легко читаем текущими и будущими разработчиками, которым предстоит работать над кодом.

    Основные моменты языка

    Парадигмы программирования

    PHP представляет собой гибкий, динамичный язык, который поддерживает несколько техник программирования. Он значительно развился в течение последних нескольких лет: добавлена мощная объектно-ориентированная модель в PHP 5.0 (2004), анонимные функции (замыкания) и пространства имен в PHP 5.3 (2009), а также трейты в PHP 5.4 (2012).

    Объектно-ориентированное программирование

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

    Функциональное программирование

    PHP поддерживает первоклассные функции, т.е. функция может быть применена к переменной. И определенные пользователем, и встроенные функции могут быть применены к переменной и вызываться динамически. Функции могут быть переданы, как аргумент к другой функции (эта особенность называется функцией высшего порядка), а также функция может возвращать другую функцию.

    Рекурсия — это особенность, которая позволяет функции вызывать саму себя, это поддерживается языком, но бо́льшая часть кода PHP фокусируется на итерации.

    Анонимные функции (замыкания) поддерживаются PHP начиная с версии 5.3 (2009).

    В PHP 5.4 добавлена возможность связывать замыкание с областью видимости объекта, а также улучшена поддержка callables (всё, что может быть вызвано), так что они могут быть использованы наравне с анонимными функциями практически во всех случаях.

    Meta Programming

    PHP поддерживает несколько форм метапрограммирования, что реализуется с помощью таких механизмов, как Reflection API и Магические Методы. Доступно много Магических Методов, например: __get() , __set() , __clone() , __toString() , __invoke() , и т.д., которые позволяют отслеживать поведение внутри класса. Разработчики Ruby часто говорят, что PHP не хватает method_missing , но он доступен, как __call() и __callStatic() .

    Пространства имен

    Как было сказано выше, сообщество PHP состоит из множества разработчиков, создающих очень много кода. Это значит, что одна библиотека PHP может иметь такое же название класса, как и другая. Когда обе библиотеки используются в одном пространстве имен, они конфликтуют и возникают проблемы.

    Пространства имен решают эту проблему. Как описано в руководстве PHP, пространства имен можно сравнить с папками операционной системы, которые являются пространствами имен файлов; два файла с одинаковым именем могут сосуществовать в разных директориях. Подобно этому, два PHP класса с одинаковым названием могут существовать в разных пространствах имен PHP.

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

    Один из рекомендуемых способов использования пространств имен описан в PSR-4, который призван обеспечить стандарты для описания файлов, классов и пространств имен, что позволяет создавать подключаемый (plug-and-play) код.

    Стандартная Библиотека PHP (SPL)

    Стандартная библиотека PHP (SPL) поставляется вместе с PHP и предоставляет набор классов и интерфейсов. Она состоит в основном из часто используемых классов структур данных (стек, очередь, куча, и т.д.), а также итераторов, которые предназначены для прохождения через эти структуры данных или ваши собственные классы, которые реализуют интерфейсы SPL.

    Интерфейс командной строки

    Главная цель, с которой был создан PHP — это разработка веб-приложений, но он также полезен при написания кода для интерфейса командной строки (CLI). PHP программы командной строки могут помочь вам автоматизировать такие общие задачи, как тестирование, развертывание и администрирование приложения.

    CLI PHP программы очень мощные, потому что вы можете использовать код вашего приложения напрямую, без нужды в создании и обеспечении безопасности веб-интерфейса (GUI) для него. Только убедитесь, что вы не используете для ваших скриптов (CLI) корень вашего веб-сервера.

    Попробуйте запустить PHP из консоли:

    Опция -i выдаст вам конфигурацию вашего PHP, подобно функции phpinfo .

    Опция -a предоставляет доступ к интерактивной оболочке, подобно ruby IRB или интерактивной оболочки python. Также существует целый ряд других полезных опций командной строки.

    Давайте напишем простую «Привет, $name» программу CLI. Чтобы это сделать, создайте файл с именем hello.php , как показано ниже.

    PHP устанавливает две специальные переменные, основанных на аргументах, с которыми запущен ваш скрипт. $argc — это переменная с числовым значением, которая содержит количество переданных аргументов, $argv — это массив, содержащий значение каждого аргумента. Первый аргумент — всегда название вашего PHP скрипта, в этом случае hello.php .

    Выражение exit() используется с ненулевым числом, чтобы дать оболочке понять, что команда не удалась. Часто используемые коды завершения можно найти здесь

    Для запуска сценария, указанного выше, наберите в командной строке:

    XDebug

    Один из самых полезных инструментов в разработке программного обеспечения — хороший отладчик. Он позволяет вам отследить исполнение вашего кода и контролировать содержимое вашего стека. XDebug — это PHP отладчик, который может использоваться различными IDE, чтобы дать вам возможность устанавливать Брейкпоинты (точки отладки кода) и контролировать стек. Он также позволяет использовать такие инструменты, как PHPUnit и KCacheGrind, для покрытия кода тестами и его профилирования.

    Если вы оказываетесь в безвыходном положении при использовании var_dump/print_r, и у вас не получается найти решение, то возможно вам поможет использование отладчика.

    Установка XDebug может оказаться сложной, но одна из самых полезных его функций это «Удаленная отладка» — если вы разрабатываете код локально и затем тестируете его в локальной машине или на другом сервере, Удаленная Отладка — это возможность, которую вы захотите сразу же включить.

    Стандартно, вы отредактируете ваш Apache VHost или .htaccess файл со следующими значениями:

    “remote_host” и “remote_port” будут указывать на ваш локальный компьютер и порт, который вы указали в вашей IDE для прослушивания. Дальше достаточно включить режим «ожидания соединений» в вашей IDE, и загрузить URL:

    Ваша IDE теперь будет перехватывать текущее состояние, позволяя вам устанавливать брейкпоинты и исследовать значения в памяти по мере выполнения скрипта.

    Менеджер зависимостей

    Существует много библиотек, фреймворков и компонентов PHP на выбор. Ваш проект, скорее всего, будет использовать некоторые из них — это и есть зависимости проекта. До недавнего времени в PHP не существовало удобного способа для управления зависимостями проекта. Даже если вы управляете ими вручную, вам приходилось беспокоиться об автозагрузчиках. Больше это не требуется.

    В настоящее время существует две основные системы управления пакетами для PHP — Composer и PEAR. Какая из них подходит именно вам? Ответ — обе.

    • Используйте Composer для управления зависимостями одного проекта.
    • Используйте PEAR для управления зависимостями всех проектов во всей вашей системе.

    В общем, пакеты Composer будут доступны только в проектах, для которых вы явно укажете его использование, тогда как пакеты PEAR будут доступны во всех ваших PHP проектах. PEAR, на первый взгляд, может показаться более простым подходом, но есть преимущества в использовании подхода «проект-к-проекту» для зависимостей.

    Composer и Packagist

    Composer является блестящим менеджером зависимостей для PHP. Укажите список зависимостей вашего проекта в файле composer.json и, с помощью нескольких простых команд, Composer автоматически скачает зависимости вашего проекта и установит для вас автозагрузку.

    На данный момент существует много PHP библиотек, которые совместимы с Composer, готовых для использования в вашем проекте. Список этих «пакетов» есть на Packagist, официальном репозитории для Composer-совместимых PHP библиотек.

    Как установить Composer

    Вы можете установить Composer локально (в вашей текущей рабочей директории; хотя это не рекомендуется) или глобально (например /usr/local/bin). Предположим, вы хотите установить Composer локально. Из корневой директории вашего проекта выполните:

    Это позволит загрузить файл composer.phar (бинарный PHP-архив). Вы можете запустить его, используя php для управления зависимостями вашего проекта. Обратите внимание: Если вы скачаете код напрямую в ваш интерпретатор, пожалуйста, сперва прочитайте код онлайн, для подтверждения его безопасности.

    Как установить Composer (вручную)

    Ручная установка Composer — это продвинутая техника; однако, существуют причины, по которым разработчик может предпочесть именно этот метод использованию интерактивной установки. Интерактивная установка проверяет настройки PHP, чтобы подтвердить, что:

    • Используется необходимая версия PHP
    • Файлы .phar могут быть верно выполнены
    • Определенные права на каталог достаточны
    • Не установлены конфликтные расширения
    • Установлены необходимые настройки php.ini

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

    Путь $HOME/local/bin (или другой каталог, выбранный вами) должен находиться в вашей переменной окружения $PATH . Это позволит быть доступной команде composer .

    Если вы прочтете документацию Composer, которая гласит, что нужно запускать Composer с помощью команды php composer.phar install , вы можете заменить эту команду на:

    Как объявить и установить зависимости

    Composer продолжает следить за зависимостями вашего проекта в файле composer.json . Вы можете управлять им вручную, если вам нравится, или же использовать сам Composer. Команда php composer.phar require добавляет зависимость в проект и, если в каталоге нет файла composer.json , он будет создан. Далее мы рассмотрим пример, который добавляет Twig, как зависимость вашего проекта. Запустите это в корневой директории вашего проекта, куда вы загружали composer.phar :


    Аналогично команда php composer.phar init проведет вас через создание полного файла composer.json для вашего проекта. Есть и другой путь, когда вы создадите файл composer.json вы можете сказать Composer, чтобы он скачал все ваши зависимости в папку vendors/ . Это также применимо для проектов, которые вы загрузили и которые предоставляют файл composer.json :

    Затем добавьте этот код в основной PHP-файл вашего приложения; это укажет PHP использовать автозагрузчик Composer для зависимостей вашего проекта.

    Теперь вы можете использовать зависимости вашего проекта и они будут автоматически загружаться (по требованию).

    Обновление зависимостей

    Composer создает файл composer.lock который хранит точную версию каждого пакета, который он загрузил во время первого запуска php composer.phar install . Если вы поделились проектом с другими разработчиками и файл composer.lock является частью него, то при запуске php composer.phar install они получат ту же версию, что и вы. Чтобы обновить ваши зависимости запустите php composer.phar update .

    Очень удобно гибко указывать требуемые версии. Если вы нуждаетесь в версии

    1.8, что значит “всё что новее 1.8.0, но меньше 2.0.x-dev”. Вы также можете использовать шаблон * , например 1.8.* . Теперь команда Composer php composer.phar update обновит все ваши зависимости до новейших версий, которые соответствуют указанным ограничениям.

    Проверка ваших зависимостей на безопасность

    Security Advisories Checker является веб-сервисом и инструментом командной строки, оба из которых изучают ваш файл composer.lock и сообщают, если есть необходимость в обновлении какой-либо из ваших зависимостей.

    Другим ветераном среди пакетных менеджеров, которым наслаждаются многие PHP-разработчики, является PEAR. Он работает практически так же, как и Composer, но имеет несколько важных отличий.

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

    PEAR устанавливает пакеты глобально, что означает то, что после установки, они доступны всем проектам на этом сервере. Это может быть полезно, если много проектов строятся на тех же пакетах с той же версией, но может привести к проблемам, если проекты разрабатывались для разных версий.

    Как установить PEAR

    Вы можете установить PEAR, загрузив установщик phar и выполнив его. Документация PEAR содержит подробную инструкцию по установке для каждой операционной системы.

    Если вы используете Linux, вы также можете посмотреть наличие PEAR в пакетном менеджере вашего дистрибутива. Debian и Ubuntu, к примеру, содержат информацию о пакете php-pear в пакетном менеджере apt.

    Как установить пакет

    Если пакет существует в списке пакетов PEAR, вы можете установить его, указав официальное название:

    Если пакет выложен на другом канале, вам нужно сначало сделать discover этого канала и затем указать его во время установки. Подробнее об этом в использование каналов.

    Обработка зависимостей PEAR с Composer

    Если вы уже используете Composer и желаете установить какой-то код из PEAR, вы можете использовать Composer для обработки зависимостей PEAR. Этот пример установит код из pear2.php.net :

    Первый раздел «repositories» даст понять Composer, что он должен сделать “initialise” (или “discover” в терминологии PEAR) репозиторий pear. Затем секция require укажет именам пакетов префикс, как ниже:

    Префикс “pear” жестко ограничен, чтобы избежать любых конфликтов, так как каналы Pear могут быть схожи с другими поставщиками пакетов например, вместо короткого имени (или полного URL) может быть использовано для объявления в каком канале находится пакет.

    Когда код будет установлен он будет доступен в вашей папке vendor и автоматически доступен через автозагрузчик (файл Autoload) Composer.

    Чтобы использовать этот пакет PEAR просто объявите как ниже:

    Практики написания кода

    Основы

    PHP — это обширный язык, который позволяет разработчикам всех уровней писать код не только быстро, но и эффективно. В любом случае, изучая язык, мы нередко забываем основы, которые мы изучали изначально (или бегло просмотрели), в пользу коротких путей и/или вредных привычек. Чтобы помочь в борьбе с этой общей проблемой, эта секция предназначена для напоминания разработчикам основ практик написания кода PHP.

    Дата и время

    PHP содержит встроенный класс DateTime, предназначенный для чтения, записи, сравнения и вычисления даты или времени. Также в PHP много функций, связанных с датой и временем, помимо класса DateTime, но класс предоставляет хороший объектно-ориентированный интерфейс для решения большинства задач. Он способен даже обрабатывать временные зоны, но это уже не рассматривается в данном коротком введении.

    Для начала работы с DateTime, сконвертируйте «сырую» строку даты и времени в объект с помощью фабричного метода createFromFormat() или выполните new \DateTime , чтобы получить текущую дату и время. Используйте метод format() для конвертирования DateTime обратно в строку для вывода.

    Вычисления с DateTime возможны с использованием класса DateInterval. У класса DateTime есть методы add() и sub() , которые принимают DateInterval, как аргумент. Не пишите код, который ожидает одинаковое число секунд каждый день, перевод часов и смена часовых поясов разрушат это предположение. Вместо этого используйте интервалы дат. Для расчета разницы между датами используйте метод diff() . Он вернет новый объект DateInterval, который очень легко отобразить.

    С объектами DateTime, вы можете использовать стандартные методы сравнения:

    И последний пример для демонстрации класса DatePeriod. Он используется для перебора повторяющихся событий. Класс может принимать два объекта DateTime, начало и конец, и интервал, для которого он вернет все события между ними.

    Design Patterns

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

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

    Исключения

    Исключения — это неотъемлемая часть большинства популярных языков программирования, но зачастую PHP разработчики не уделяют им должного внимания. Языки, подобные Ruby, очень подробно обрабатывают исключения, поэтому, если что-то идёт не верно, например: не удался HTTP запрос, запрос к базе данных происходит неправильно или если запрошенное изображение не было найдено, Ruby (или используемые гемы) выбросит исключение на экран, помогающее понять где вы допустили ошибку.

    PHP сам по себе довольно слаб в плане этого и вызов file_get_contents() , как правило, даст вам только FALSE и предупреждение. Многие устаревшие PHP-фреймворки, как CodeIgniter, просто вернут false, добавят сообщение в свой собственный журнал и, может быть, дадут вам использовать метод, как $this->upload->get_error() , чтобы посмотреть, что пошло не так. Проблема в том, что вы должны искать ошибку и проверять документацию, чтобы понять, какой ошибочный метод существует в этом классе, вместо того, чтобы сделать это всё более очевидным.

    Еще одна проблема в том, что классы автоматически выдают ошибку на экран и закрывают процесс. Когда вы делаете это, вы не даете другому разработчику динамически обработать эту ошибку. Исключения должны быть выброшены, чтобы дать разработчику знать об ошибке и выбрать, как её обработать. Например:

    Исключения SPL

    Универсальный класс Exception предоставляет очень мало отладочного контекста для разработчика; как бы то ни было, для того чтобы исправить это, можно создать специализированный класс, который будет расширять возможности универсального класса Exception :

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

    Например, если вы используете магический метод __call() и вами был вызван неизвестный метод, то вместо выбрасывания стандартного исключения, которое очень расплывчато, или вместо создания своего исключения, вы можете просто использовать throw new BadFunctionCallException; .

    Базы данных

    Скорее всего, ваш PHP код будет использовать базу данных для сохранения информации. Существует несколько вариантов для подключения и взаимодействия с базой данных. Рекомендуемым вариантом до PHP 5.1.0 было использование нативных (родных) драйверов, таких как mysql, mysqli, pgsql, etc.

    Встроенные драйвера замечательны, если вы используете ОДНУ базу данных в ваших приложениях, но если, например, вы используете MySQL и немного MSSQL, или вам нужно подключиться в базе данных Oracle, тогда вы не сможете использовать те же драйвера. Вам нужно будет изучить новый API для каждой базы данных — и это может оказаться нерациональным.

    Обратите внимание, что расширение mysql для PHP больше не поддерживается, и его официальным статусом, начиная с PHP версии 5.4.0, является «Устарело в связи с длительным сроком использования». Это значит, что оно будет удалено в течение нескольких следующих релизов, так что в PHP 5.6 (или в версиях, следующих за 5.5) оно вполне может пропасть. Если вы используете mysql_connect() и mysql_query() в своих приложениях, тогда вам придется столкнуться с переписыванием кода, поэтому лучшим вариантом сейчас является использование в приложениях mysqli или PDO вместо mysql, прежде чем вы в дальнейшем столкнётесь с нерабочими приложениями. Если вы начинаете изучение баз данных с нуля, тогда полностью откажитесь от использования расширения mysql — используйте Расширение MySQLi или PDO.

    PDO — это абстрактная библиотека для подключения к базе данных, встроенная в PHP с версии 5.1.0, которая обеспечивает единый интерфейс для взаимодействия с большим количеством различных баз данных. PDO не будет переводить ваши SQL запросы или эмулировать отсутствующие возможности; он чист для подключения к нескольким типам баз данных с тем же API.

    Более важно, что PDO позволяет вам безопасно вводить пользовательские данные (например идентификатор) в ваши SQL запросы, без беспокойства о SQL-инъекциях. Это возможно благодаря использованию PDO выражений и связывания (bound) параметров.

    Предположим, что PHP скрипт получает числовой идентификатор в качестве параметра из запроса. Этот идентификатор должен быть использован для получения пользовательских записей из базы данных. Ниже приведён неправильный способ реализации этого:

    Это ужасный код. Вы вставляете необработанные параметры в SQL запрос. Это приведёт к взлому. Просто представьте, что взломщик сделает запрос http://domain.com/? >, который присвоит переменной $_GET[‘id’] значение 1;DELETE FROM users и приведёт к удалению всех ваших пользователей! Вместо этого, вы должны очистить ввод идентификатора с помощью связывания параметров PDO.

    Это правильный код. Он использует связанный параметр в выражении PDO. Это позволяет избежать ввода некоректного ID перед тем, как передать запрос в базу данных, тем самым предотвращая потенциальные SQL-инъекции.

    Вы также должны понимать, если подключение не закрыто должным образом, то оно использует много ресурсов, которые тратятся впустую, впрочем это больше относится к другим языкам. Используя PDO, вы можете неявно закрывать подключение уничтожив объект — все ссылки на него будут удалены, т.е. установлены в NULL. Если не сделать этого явно, PHP закроет подключение за вас, когда выполнение скрипта завершится, если только вы не используете постоянные подключения.

    Уровни абстракции

    Многие фреймворки предоставляют собственный уровень абстракции, который может строиться на основе PDO. Такая фактическая абстракция баз данных позволяет оборачивать запросы на PHP в методы, которые отсутствуют в одной системе баз данных, но работают в другой. Это, конечно, добавит небольшие накладные расходы, но если вы строите портативные приложения, которым необходима работа с MySQL, PostgreSQL и SQLite, тогда, для чистоты кода, минимальными накладными расходами можно пренебречь.

    Некоторые уровни абстракции построены с использованием PSR-0 стандарта, поэтому могут быть установлены в любое приложение:

    Безопасность

    Безопасность веб-приложений

    Есть плохие люди, которые могут и хотят взломать ваши веб-приложения. Важно принять необходимые меры предосторожности, чтобы укрепить безопасность вашего приложения. К счастью, прекрасные люди в The Open Web Application Security Project (OWASP) составили полный список известных проблем безопасности и методов защиты от них. Это должно быть прочитано любым разработчиком, заботящимся о безопасности.

    Хэширование паролей

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

    Очень важно правильно хэшировать пароль перед его сохранением. Хэширование пароля является необратитым, односторонняя функция применяется на пользовательских паролях. Она возвращает строку определенной длины, которую невозможно расшифровать. Это значит, что вы можете сравнить один хэш с другим, чтобы понять, что они пришли из одной и той же исходной строки, но вы не можете определить оригинальную строку. Если ваши пароли не захэшированы, и доступ к базе данных получен третьй стороной, то ваши пользовательские аккаунты теперь скомпрометированы. Некоторые пользователи (к сожалению) могут использовать один и тот же пароль для разных сервисов. Как бы то ни было, очень важно серьезно относиться к безопасности.

    Хэширование паролей с функцией password_hash

    В PHP 5.5 была представлена функция password_hash . Сейчас она использует BCrypt, сильнейший алгоритм, поддерживаемый PHP. Она будет обновлена в будущем, для поддержки бОльшего числа алгоритмов, по мере необходимости. Библиотека password_compat была создана для обратной совместимости с PHP >= 5.3.7.

    Ниже мы хэшируем строку и далее сверяем её с новой строкой. Поскольку наши две исходные строки отличаются (‘secret-password’ и ‘bad-password’) эта авторизация будет неудачной.

    Фильтрация данных

    Никогда не доверяйте пользовательскому вводу, который передаётся вашему PHP коду. Всегда проверяйте и очищайте пользовательский ввод перед его использованием в коде. Функции filter_var и filter_input помогут очистить переменные, а также проверить соответствие введённых данных некоторому формату (например, адрес электронной почты).

    Пользовательский ввод может быть различным: $_GET и $_POST , данные введённые в форму, некоторые значения в суперглобальной переменной $_SERVER и тело HTTP запроса, открытое с помощью fopen(‘php://input’, ‘r’) . Запомните, что пользовательский ввод не ограничивается данными формы, отправленной пользователем. Отправляемые и загружаемые файлы, значения сессий, данные cookie и данные сторонних веб-сервисов также приравниваются к пользовательскому вводу.

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

    Данные могут быть отфильтрованы по-разному, в зависимости от их назначения. Например, когда нефильтрованные данные, введённые пользоватем, передаются в HTML код страницы, он может выполнить HTML и JavaScript на вашем сайте! Этот тип атаки известен, как Cross-Site-Scripting (XSS) и может иметь очень серьёзные последствия. Один из способов избежать XSS заключается в очистке ввода от всех HTML тэгов (их удалением, или заменой на HTML символы) с помощью функции strip_tags или экранирование символов в равносильные им HTML сущности с функцией htmlentities или htmlspecialchars .

    Другой пример, передача данных для выполнения командной строкой. Это может быть крайне опасно (и, как правило — это плохая идея), но вы можете использовать встроенную функцию escapeshellarg для очистки аргументов командной строки.

    Последний пример, принимает пользовательский ввод, чтобы определить, какой файл загружать из файловой системы. Это может быть использовано для изменения имени файла на путь файла. Вам нужно убрать “/”, “../”, нулевые байты или другие символы из пути файла, так чтобы скрипт не мог загружать скрытые, непубличные или конфиденциальные файлы.

    Санитизация

    Санитизация удаляет (или экранирует) неправильные или небезопасные символы из пользовательского ввода.

    Например, вам необходимо нормализовать пользовательский ввод перед подключением ввода в HTML или его вставкой в сырой SQL запрос. Когда вы используете связанные параметры с PDO, они будут очищать ввод за вас.

    Иногда требуется разрешить некоторые безопасные HTML тэги в вводе, когда он подключается в HTML страницу. Это очень трудно сделать и многие избегают этого, используя ограниченное форматирование, как например Markdown или BBCode, либо библиотеки с белым списком, как HTML Purifier, существующие по этой причине.

    Валидация

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

    Конфигурационные файлы

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

    • Рекомендуется хранить вашу конфигурационную информацию там, где к ней не может быть получен доступ напрямую, а доступ к ней осуществлялся через файловую систему.
    • Если вы вынуждены хранить конфигурационные файлы в корневом каталоге, именуйте файл с расширением .php . Это гарантирует, что, если к скрипту обратятся напрямую, он не будет выведен, как обычный текст.
    • Информация в файлах конфигурации, должна быть защищена соответственно, либо с помощью шифрования или системных прав группы/пользователя файла.

    Использование глобальных переменных

    Примечание: С появлением PHP 5.4 директива register_globals была удалена и больше не может быть использована. Это касается тех, кому нужно обновить старое приложение.

    Включенный параметр конфигурации register_globals делает несколько типов переменных (в том числе из $_POST , $_GET и $_REQUEST ) глобальными, доступными в глобальной области видимости вашего приложение. Это может легко привести к проблемам с безопасностью, поскольку ваше приложение не сможет эффективно определить откуда пришли данные.

    Например : $_GET[‘foo’] будет доступна через $foo , которая может заместить переменную, которая не была объявлена. Если вы используете PHP register_globals off (выключена).

    Сообщения об ошибках

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

    Разработка

    Для того, чтобы видеть все возможные ошибки во время разработки, настройте следующие параметры в вашем php.ini :

    Установка значения в -1 покажет каждую возможную ошибку, даже если новые уровни и константы будут добавлены в новых версиях PHP. Константа E_ALL ведёт себя так-же в PHP 5.4. — php.net

    Константа уровня ошибок E_STRICT была введена в 5.3.0 и не является частью E_ALL , как бы то ни было, она стала частью E_ALL в 5.4.0 Что это значит? Для вывода всех возможных ошибок в версии 5.3 вам нужно использовать либо -1 либо E_ALL | E_STRICT .

    Вывод всех ошибок разными версиями PHP

    • -1 or E_ALL
    • 5.3 -1 or E_ALL | E_STRICT
    • > 5.3 -1 or E_ALL

    Продакшн

    Чтобы спрятать все ошибки вашей среды во время продакшна, настройте ваш php.ini следующим образом:

    С этими настройками в продакшне, ошибки всё также будут записываться в лог ошибок веб сервера, но не будут показаны пользователю. Для подробной информации об этих настройках, смотрите руководство PHP:

    Тестирование

    Написание автоматизированных тестов для вашего кода PHP, считается наилучшей практикой. Автоматизированные тесты являются отличным инструментом для подтверждения того, что ваше приложение не сломается, когда вы внесёте изменения или добавите новую функциональность.

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

    Тесто-ориентированная разработка

    Разработка через тестирование (TDD) представляет собой процесс разработки программного обеспечения, который опирается на повторении очень короткого цикла разработки: сперва, разработчик пишет автоматизированные тесты, которые определяют желаемое улучшение или новую функцию, далее производит код, который успешно пройдет этот тест и наконец производит рефактор кода для соответствия стандартам. Kent Beck, человек которому приписывают статус разработчика или “переоткрывателя” техники, TDD предлагает простую конструкцию, а также вселяет уверенность.

    Существует несколько различных типов тестирования, которые вы можете сделать для вашего приложения.

    Модульное тестирование (Unit Testing)

    Модульное тестирование — это подход к программированию, который позволяет удостовериться, что функции, классы и методы работают, как ожидается с момента начала и до конца разработки. Проверяя значения, которые приходят и выходят из различных функций и методов, вы можете быть уверены, что внутренняя логика работает правильно. Используя Внедрение Зависимостей и внедрение классов «макетов» и заглушек, вы можете убедиться, что зависимости используются правильно для большего покрытия тестами.

    При создании класса или функции, вы должны создать модульный тест для каждого возможного поведения. На базовом уровне, вы должны убедиться, что ваш код выдаёт ошибку, если вы отсылаете неправильные аргументы и работает, если вы отсылаете правильные аргументы, соответственно. Это поможет убедиться в том, что изменения, которые вы сделаете относительно этого класса или функции позднее не помешают старым работать как ожидалось. Единственная альтернатива этому var_dump() в test.php, который не является способом создания приложений — больших или маленьких.

    Ещё одно использование модульных тестов — вклад в open source. Если вы можете писать тесты, которые показывают сломанную функциональность, тогда почините её, и покажите, что тест пройден, патчи имеют больше шансов быть принятыми. Если вы запускаете проект, который допускает Pull Request, тогда вы должны указать это в качестве требования.

    PHPUnit является фреймворком тестирования стандарта де-факто для написания модульных тестов в PHP приложениях, но также существует несколько альтернатив.

    Интеграционное тестирование

    Интеграционное тестирование (иногда называется Интеграция и Тестирование, с аббревиатурой “I&T”) это фаза в тестирование програмнного обеспечения, в котором отдельные модули, комбинируются и тестируются, как группа. Это происходит после модульного тестирования и перед валидационным тестированием. Integration testing takes as its input modules that have been unit tested, groups them in larger aggregates, applies tests defined in an integration test plan to those aggregates, and delivers as its output the integrated system ready for system testing.

    Многие инструменты, которые могуть быть использованы для модульного тестирования, также могут быть использованы для интеграционного тестирования, поскольку используются схожие принципы.

    Функциональное тестирование

    Также известное, как подтверждающее тестирование, функциональное тестирование состоит из использования инструментов для создания автоматизированных тестов, которые по-настоящему используют ваше приложение, а не просто проверяют, что отдельные куски (модули) кода ведут себя и могут взаимодействовать правильно. Эти инструменты обычно работают, используя реальные данные и симулируя реальных пользователей приложения.

    Инструменты функционального тестирование

    • Selenium
    • Mink
    • Codeception это фреймворк для тестирования (всё-в-одном), включающий инструменты подтверждающего тестирования

    Поведенческо-ориентированная разработка

    Существует две разновидности Поведенческо-ориентированной разработки (BDD): SpecBDD и StoryBDD. SpecBDD концентрируется на техническом поведении или коде, в то время как StoryBDD концентрируется на деле, будущем поведении или взаимодействии. PHP имеет фреймворки для обоих типов BDD.

    Используя StoryBDD, вы пишите читаемые людьми истории, которые объясняют поведение вашего приложения. Эти истории могут быть запущены, как актуальные тесты для вашего приложения. Фреймворк, используемый в PHP приложениях для StoryBDD — Behat, который вдохновлён проектом для Ruby Cucumber и реализует Gherkin DSL для объяснения особенностей поведения.

    Вместе со SpecBDD, вы пишите спецификацию, которая объясняет, как ваш код должен себя вести. Вместо тестирования функции или метода, вы объясняете, как эта функция или метод должен себя вести. PHP предлагает фреймворк PHPSpec для данных целей. Этот фреймворк вдохновлён проектом RSpec для Ruby.

    Инструменты

    • Behat, StoryBDD фреймворк для PHP, вдохновлённый проектом для Ruby Cucumber;
    • PHPSpec, SpecBDD фреймворк для PHP, вдохновлённый проектом для Ruby RSpec;
    • Codeception это фреймворк для тестирования (всё-в-одном), использующий принципы BDD;

    Дополнительные инструменты тестирования

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

    Инструменты

    • Selenium автоматизационный инструмент для браузера интегрируемый с PHPUnit
    • Mockery Mock Object Framework интегрируемый с PHPUnit или PHPSpec

    Сервера и развертывание

    PHP приложения могут быть развернуты и запущены на продакшн веб-сервере рядом способов.

    Платформа, как сервис (PaaS)

    PaaS предоставляет системную и сетевую архитектуры, необходимые для запуска PHP приложений в веб. Это означает, как минимум, отсутствие настройки для запуска PHP приложений или PHP фреймворков.

    В недавнее время PaaS стал очень популярным методом для развертывания, хостирования и расширения PHP приложений всех размеров. Вы можете найти список провайдеров PHP PaaS в нашей ресурсной секции.

    Виртуальный или выделенный сервер

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

    nginx и PHP-FPM

    PHP, через встроенный в него менеджер процессов FastCGI (FPM), очень хорошо сочетается с nginx, который является легковесным и высокопроизводительным веб-сервером. Он использует меньше памяти, чем Apache и может лучше обрабатывать конкурентные запросы. Это особенно важно на виртуальном сервере, для которого может быть критичен объем используемой памяти.

    Apache и PHP

    PHP и Apache имеют длинную совместную историю. Apache широконастраиваемый и имеет большое количество доступных модулей для расширения функциональности. Это очень популярный выбор для виртуальных хостингов и лёгкой установки PHP фреймворков и приложений с открытым исходным кодом, как WordPress. К сожалению, Apache использует больше ресурсов, чем nginx, и не может выдержать столько же посетителей одновременно.

    Apache имеет несколько возможных конфигураций для запуска PHP. Самая популярная и лёгкая для установки prefork MPM вместе с mod_php5. Хотя это не самое эффективное в отношении памяти решение, оно очень просто для установки и использования. Наверное, это лучшее решение, если вы не хотите углубляться в серверное администратирование. Если вы хотите использовать mod_php5, вы обязаны использовать prefork MPM.

    Если вы хотите получить больше производительности и стабильности с Apache, тогда вы можете взглянуть на ту же FPM систему, как в nginx и запустить worker MPM или event MPM, используя mod_fastcgi или mod_fcgid. Эта конфигурация позволит получить существенную экономию в памяти и будет намного быстрее, но потребует больше работы для установки.

    Виртуальный хостинг

    PHP, благодаря своей популярности, установлен на большом количестве виртуальных хостингов. Очень трудно найти хостинг без установленного PHP, но очень важно убедиться в том, что установлена последняя версия. Виртуальные хостинги позволяют вам и другим разработчикам развертывать веб-сайты на одной машине. Достоинством виртуального хостинга является его низкая цена. Недостатком — то, что вы не знаете, чем будут заниматься ваши соседи; сильно загружая сервер или открывая бреши в безопасности. Если бюджет вашего проекта позволяет избежать использования Виртуальных хостингов, то рассмотрите другие варианты.

    Построение и развёртывание вашего приложения

    Если вы обновляете структуру базы данных вручную или запускаете вручную тесты перед обновлением ваших файлов, то подумайте дважды! С каждой дополнительной необходимой ручной задачей для развёртывания новой версии вашего приложения, потенциальный шанс возникновения фатальной ошибки возрастает. Делаете ли вы простое обновление, полный процесс сборки или стратегию непрерывной интеграции автоматизация сборки — ваш друг.

    Среди задач, которые вы, возможно, захотите автоматизировать:

    • Управление зависимостями
    • Компиляция, минификация файлов (assets)
    • Запуск тестов
    • Создание документации
    • Запаковка
    • Развёртывание

    Создание инструментов автоматизации

    Инструменты построения — коллекция скриптов, которые обрабатывают общие задачи развёртки приложений. Инструменты постройки не являются частью вашего приложения, они взаимодействуют с вашим приложением «извне».

    Существует большое количество инструментов с открытым исходным кодом, которые могут помочь вам автоматизировать процесс постройки, некоторые написаны на PHP, другие на других языках. Это не должно удерживать вас от их использования, если они лучше подходят под задачу. Вот несколько примеров:

    Phing самый простой путь, чтобы начать автоматическую развёртку в мире PHP. С Phing вы можете контролировать ваш процесс запаковки, развёртки или тестирования с помощью простого построечного XML файла. Phing (который базируется на Apache Ant) предоставляет богатый набор задач, часто необходимых для установки или обновления веб приложения, и может быть расширен дополнительными нестандартными задачами, написанными на PHP.

    Capistrano — система для начинающих-профессиональных разработчиков для исполнения команд в структуризованном, воспроизводимом пути на одной или многих удалённых машинах. Предварительно он настроен для развёртки приложений Ruby on Rails. Как бы то ни было люди успешно развёртывают и PHP приложения с ним. Успех использования Capistrano зависит на умении работы с Ruby и Rake.

    Сообщение в блоге Dave Gardner PHP Deployment with Capistrano является хорошей отправной точкой для PHP разработчиков, заинтересованных в Capistrano.

    Chef является нечто большим, чем просто фрэймворк развёртки. Это очень мощный интеграционный фрэймворк, основанный на Ruby, который не просто развёртывает ваше приложение, но и может построить всё серверное окружение или виртуальный сервер.

    Ресурсы о Chef для PHP разработчиков:

    Для дальнейшего изучения:

    Непрерывная интеграция

    Непрерывная интеграция — это практика разработки программного обеспечения, при которой члены команды объединяют их работу очень часто, обычно каждый член команды объединяет как минимум ежедневно — что приводит к нескольким объединениям в день. Многие команды считают, что данный подход позволяет значительно сократить интеграционные проблемы и позволяет им разрабатывать совместный продукт быстрее.

    Существуют разные пути, для осуществления непрерывной интеграции для PHP. Недавно Travis CI закончил великолепную работу по созданию непрерывной интеграции, реально даже для маленьких проектов. Travis CI — сервис непрерывной интеграции для сообщества с открытым исходным кодом. Оно интегрируется с GitHub и предлагает первоклассную поддержку для многих языков, включая PHP.

    Для дальнейшего изучения:

    Кэширование

    PHP очень быстр сам по себе, но такие ресурсоёмкие операции, как установка удалённого подключения и, к примеру, загрузка файлов, могут привести к существенному падению скорости работы приложения. К счастью, есть различные инструменты, позволяющие поднять скорость определённых частей вашего приложения, или уменьшить количество запусков этих «тяжёлых» задач.

    Кэширование байткода

    Во время исполнения PHP файла, на низком уровне он сперва компилируется в байткод (или опкод) и только потом исполняется байткод. Если PHP файл не изменён, то байткод будет всегда одинаков. Это значит, что шаг компиляции — пустая трата процессорных ресурсов.

    И тут настает время кэширования байткода. Оно предотвращает избыточные компиляции, сохраняя в памяти байткод и переиспользуя его в последовательных вызовах. Установка подобного кэширования — вопрос пары минут, а скорость вашего приложения поднимется существенно. Поэтому нет причин не использовать кэширование.

    Начиная с PHP 5.5 появилось встроенное расширение для кэширования байткод — OPcache. Оно также доступно в виде отдельного расширения для ранних версий.

    Популярные системы подобного кэширования:

    • APC (PHP 5.4 и более ранние)
    • XCache
    • Zend Optimizer+ (часть Zend Server)
    • WinCache (расширение для MS Windows Server)

    Кэширование объектов

    Бывают моменты, когда вам необходимо кэшировать определённые объекты в вашем коде, такие как данные, которые неразумно получать ещё раз из базы данных, когда результат вряд ли изменится. Вы можете использовать ПО для кэширования чтобы сохранить эти кусочки данных в памяти, что позволит чрезвычайно быстро обратиться к ним позже. Если вы сохраните эти объекты в хранилище данных и после получите их и выдадите напрямую из кэша для некоторых запросов, вы можете получить существенное улучшение производительности и уменьшение нагрузки на сервер базы данных.

    Множество популярных решений для кэширования байткода также дают вам кэшировать данные, поэтому нет причин, чтобы не воспользоваться ими. APC, XCache и WinCache предоставляют API для сохранения данных из вашего PHP кода в свой кэш в памяти.

    Самыми популярными системами кэширования объектов являются APC и memcached. APC — идеальный выбор для кэширования объектов, он включает простой API для добавления данных в кэш память и при этом очень просто устанавливается и используется. Единственное существующее ограничение APC состоит в том, что он привязан к серверу на котором установлен. Memcached, напротив, устанавливается как отдельный сервис, и к нему можно получить доступ по сети, что позволяет хранить объекты в очень быстром централизованном хранилище данных и множество других систем могут получать эти данные из него.

    Учтите, если PHP запущен как (Fast-)CGI приложение внутри вашего веб-сервера, то каждый PHP процесс будет иметь собственный кэш, например, APC данные не будут расшарены между вашими процессами. В этом случае имеет смысл подумать об использовании вместо него memcached, так как он не ограничен процессом PHP.

    В сетевой конфигурации APC зачастую выигрывает у memcached в плане скорости доступа, но memcached обладает возможностью масштабироваться быстрее и более широко. Если иметь несколько серверов для обслуживания приложения не входит в ваши планы или вам не нужны дополнительные возможности memcached, тогда APC будет лучшим выбором для кэширования объектов.

    Пример использования APC:

    Подробнее о популярных системах кэширования объектов:

    Руководство по эксплуатации Андроид 4.4.2 KitKat

    Компания Google презентовала пользователям совершенно новую версию ОС Android 4.4 KitKat, в которой было невероятно количество кардинальных изменений. Однако не прошло и нескольких дней, как компания представила версию 4.4.1, а спустя еще несколько дней — Андроид 4.4.2, инструкция пользователя для Nexus которой доступна на этой странице.

    Версия: Формат: Размер: Язык: Скачать:
    PDF Русский

    Аndroid 4.4.2: инструкция пользователя

    При знакомстве с новой версией, первое, что привлекает внимание – это обновленный интерфейс.

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

    Кроме того, были добавлены несколько новых пунктов в меню настроек. Теперь во вкладке экрана есть новая функция «Беспроводной монитор», а в настройках безопасности – кнопка «Включить виджеты». Нажав последнюю, вы сможете отключить все виджеты на экране, чтобы остались только часы. Больше подробностей об этих функциях расскажет инструкция для Андроид 4.4.2 на русском.

    Разобраться в новых функциях поможет Android 4.4.2 KitKat инструкция по применению, в которой все разложено по полочкам. С ее помощью, Вы сможете быстро разобраться во всех нововведениях системы, а также их предназначении.

  • Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL