Php 5


PHP 5.3 (2009)

1. Замыкания или анонимные функции.

Объявление функций без имени.

<?php    $myFunction = function($arg1) {    echo "Hello: $arg1";   }    $myFunction("PHP");    //Результат:  //Hello: PHP  

Для классов:

<?php    class MyClass {     /**   __invoke - магическая функция вызывается, когда    скрипт пытается выполнить объект как функцию.    */   public funciont __invoke($arg1) {    echo "Hello: $arg1";   }   }    $myClass = new MyClass;  $myClass("PHP");    //Результат:  //Hello: PHP  

2. Внешние переменные внутри функции.

<?php    $myName = "PHP 5.3";  function getName() use($myName) {   echo "Hello: $myName";   }    getName();    //Результат:  //Hello: PHP 5.3  

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

Пространства имен позволяют создавать классы с одинаковым именем, но с разным пространством имен (аналог файлов с одинаковым именем в разных папках).

4. Тернанный оператор.

5. Сборщик мусора.

Работает без утечки памяти для больших приложений

6. SPL Функции

Описание будет в следующих статьях.

PHP 5.4 (2012)

1. Трейты (trait).

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

2. Нативная поддержка юникода.

Больше не нужно использовать multibyte и подобные расширения.


3. Короткий синтаксис для объявления массивов.

3. Поддержка разыменования массивов.

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

Для разработки, чтобы не ставить Apache, Nginx …

5. Прогресс для загрузки файлов.

При загрузке файлов, в сессии хранится значение upload_progress_myform. Можно дергать AJAX-ом и смотреть состояние загрузки.

6. Вызов метода или свойства класса выражением.

PHP 5.5 (2013)

1. Генераторы.

Можно создать функцию для использования в foreach.

2. Итераторы объектов.

Можно создать свой класс для обхода в foreach. Для этого, нужно реализовать интерфейс Iterator


Хороший пример использования итераторов можно найти во фреймворке Yii2.

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


3. Password Hashing API.

Хеширование паролей из коробки. Подробнее в следующих статьях.

4. Ключевое слово ::class.

Используется для получение имени класса.

5. Функция list() в foreach

6. Функция empy().

В функцию empy() — можно указать результат функции или выражения (раньше, нужно было сохранять результат в переменную).

7. finally в исключениях.

Может вызываться вместо или после catch. Код в блоке finally всегда будет выполняться после кода в блоках try и catch, вне зависимости было ли брошено исключение или нет, перед тем как продолжится нормальное выполнение кода.

PHP 5.6 (2014)

1. Скалярные выражения в константах.

2. Переменное число аргументов функции при помощи …


3.Оператор возведения в степень **.

4. Импорт функций и констант.

5. Поддержка загрузки файлов больше 2 Гб.

6. В ядро включен интерактивный отладчик phpdbg.

7. Разрешено повторное использование php://input

Разрешено повторное использование php://input, а $HTTP_RAW_POST_DATA объявлена устаревшей.

PHP 7 (2015)

1. Группировка объявления импорта классов в одном пространстве имен.

2. Значение по умолчанию для переменной.

3. <=> Трехуровневое сравнение двух значений.


4. Скалярные типы данных в аргументах функции и тип возвращаемого значения.

5. Перехват ошибок уровня ядра.

Теперь, все фатальные ошибки можно перехватывать и перебрасывать (try catch)

6. Анонимные классы.

7. Функии генерации случайного числа и случайной строки (CSPRNG — функции).

8. Генераторы могут вызывать другие генераторы и возвращать значения.

Это позволяет проверить, правильно ли выполнился генератор.

кодер.укр

Введение в PHP5


Данил Миронов

2003-11-29

Оригинал статьи: http://www.phpbuilder.com/columns/argerich20030411.php3
Автор: Luis Argerich

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

  • Новая объектная модель
  • Исключения
  • Пространства имён

Но сначала пара официальных заявлений:

  • Некоторые из приведённых в данной статье решений воспроизводимы в PHP4, но, тем не менее, их описание присутствует и здесь для большей удобочитаемости и целостности всей статьи.
  • Некоторые из описанных в данной статье особенностей в конечном релизе PHP5 могут быть изменены.

PHP5 ещё не выпущен и мне неизвестно, когда это произойдёт, но уже сейчас вы можете потестировать и изучить новые возможности языка, скачав рабочую версию PHP5 с http://snaps.php.net и установив её. По этой ссылке вы можете найти готовые для установки Windows и Linux версии PHP5. Инсталляция проходит как у любого нормального релиза PHP, так что все бегом за новой игрушкой.

Новая объектная модель

В PHP5 объектную модель основательно подлатали и добавили много новых возможностей, благодаря чему PHP5 стал «чем-то» напоминать Java. В этой части нашей статьи будет описана эта новая объектная модель и приведено несколько небольших примеров, чтобы вам обозначить исходный рубеж для ваших экспериментов.


  • Конструкторы и деструкторы
  • Объекты как ссылки
  • Клонирование объектов
  • Дескрипторы Private, Public и Protected
  • Интерфейсы
  • Абстрактные классы
  • __call
  • __set and __get
  • Закрытые члены
Конструкторы и деструкторы

В PHP4 конструктор именуется так же как и сам класс, а деструкторы отсутствуют полностью.

В PHP5 конструктор класса именуется __construct, а деструктор — __destruct.

Пример 1: Конструкторы и деструкторы

<?php
class foo {
  var 
$x;

  function __construct($x) {
    
$this->$x;
  }


  function display() {
    print(
$this->x);
  }

  function __destruct() {
    print(
"ну, пока, до скорого");
  }
}

$o1 = new foo(4);
$o1->display();
?> 

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

Объекты как ссылки

Как вам уже наверняка известно, в PHP4 переменные передаются в функции/методы по значению (передаётся копия), если в объявлении функции не поставлен символ ‘&’, указывающий на то, что переменная должна передаваться как ссылка. В PHP5 объекты передаются всегда как ссылки. Присваивание объектов тоже происходит по ссылке.

Пример 2: Объекты как ссылки


<?php
class foo {
  var 
$x;

  function setX($x) {
    
$this->$x;
  }

  function getX() {
    return 
$this->x;
  }
}

$o1 = new foo;
$o1->setX(4);
$o2 $o1;
$o1->setX(5);
if(
$o1->getX() == $o2->getX()) print("Ох ты, Боже мой!");
?> 

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

Если объекты присваиваются и передаются по ссылке, то вам нужно как-то создавать и копии объектов. Для этого используйте метод __clone.

Пример 3: Клонирование объектов

<?php
class foo {
  var 
$x;

  function setX($x) {
    
$this->$x;
  }

  function getX() {
    return 
$this->x;
  }
}

$o1 = new foo;
$o1->setX(4);
$o2 $o1->__clone();
$o1->setX(5);

if($o1->getX() != $o2->getX()) print("Копии взаимонезависимы");
?> 

В программировании клонирование разрешено, так что всё легально 😉

Дескрипторы Private, Public и Protected

В PHP4 все методы и переменные внутри объекта были доступны извне, другими словами все методы и переменные всегда были открытыми. В PHP5 вводится три дескриптора для осуществления контроля над доступом к переменным и методам: Public, Protected и Private.

  • Public (открытый): Метод/переменная доступны из любого места в коде.
  • Private (закрытый): Закрытые методы или переменные доступны только внутри класса.
  • Protected (защищённый): Защищённые методы или переменные доступны только внутри класса, где они были объявлены и из его производных классов.

Пример 4: Public, protected and private

<?php
class foo {
  private 
$x;

  public function public_foo() {
    print(
"Это открытый метод");
  }

  protected function protected_foo() {
    
$this->private_foo(); //Всё правильно, мы можем вызывать закрытые методы, потому что мы находимся в том же классе
    
print("Это защищённый метод");
  }

  private function private_foo() {
    
$this->3;
    print(
"Это закрытый метод");
  }
}

class foo2 extends foo {
  public function 
display() {
    
$this->protected_foo();
    
$this->public_foo();
    
// $this->private_foo();  // Неправильно! В базовом классе метод закрыт
  
}
}

$x = new foo();
$x->public_foo();
//$x->protected_foo();  //Неправильно, защищённые методы могут вызываться только из того же класса или его производных классов
//$x->private_foo();    //Неправильно, закрытые методы могут быть вызваны только в классе, где они были объявлены 

$x2 = new foo2();
$x2->display();
?> 

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

Интерфейсы

Как вы знаете, PHP4 поддерживает наследование классов синтаксисом «class foo extends parent». В PHP4 И в PHP5 класс может наследовать только один класс, то есть множественное наследование не поддерживается. Интерфейсом называется класс, в котором не реализуется ни один метод, определяются только названия методов и набор передаваемых им параметров. Впоследствии классы могут ‘реализовывать’ сколь угодно много интерфейсов, показывая тем самым, что тот или иной класс реализует методы, определённые в интерфейсе.

Пример 5: Интерфейсы

<?php
interface displayable {
  function 
display();
}

interface printable {
  function 
doprint();
}

class foo implements displayable,printable {
  function 
display() {
    
// код
  
}

  function doprint() {
    
// код
  
}
}
?> 

Использование интерфейсов полезно для более удобного чтения и понимания кода: прочитав объявление класса, мы увидим, что класс реализует интерфейсы displayable и printable; это означает, что класс должен иметь методы display() и doprint(). Как эти методы реализованы — значения не имеет, главное — уже из объявления класса, вы знаете, что можете вызывать эти методы.

Абстрактные классы

Абстрактным называется класс, который может использоваться только как базовый (то есть создавать объекты этого класса нельзя). Как и в любом нормальном базовом классе, в абстрактном классе вы можете определять методы и переменные.

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

Пример 6: Абстрактные классы

<?php
abstract class foo {
  protected 
$x;

  abstract function display();

  function setX($x) {
    
$this->$x;
  }
}

class foo2 extends foo {
  function 
display() {
    
// Код
  
}
}
?>

__call

С PHP5 вы можете реализовать в классе специальный метод __call(), как метод для «отлова» всех нереализованных в данном классе методов. Метод __call (если он определён) вызывается при попытке вызвать недоступный или несуществующий метод.

Пример 7: __call

<?php
class foo {

  function __call($name,$arguments) {
    print(
"Вызывали? Я -  $name!");
  }
}

$x = new foo();
$x->doStuff();
$x->fancy_stuff();
?> 

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

Пример 8: Перегрузка методов с помощью __call

<?php
class Magic {

  function __call($name,$arguments) {
    if(
$name=='foo') {
      if(
is_int($arguments[0])) $this->foo_for_int($arguments[0]);
      if(
is_string($arguments[0])) $this->foo_for_string($arguments[0]);
    }
  }

  private function foo_for_int($x) {
    print(
"у, смотрите, целое число!");
  }

  private function foo_for_string($x) {
    print(
"у, смотрите, строка!");
  }
}

$x = new Magic();
$x->foo(3);
$x->foo("3");
?> 

__set и __get

Но это ещё не всё, теперь вы можете определить методы __set и __get для «отлова» всех попыток изменения или доступа к неопределённым (или недоступным) переменным.

Пример 9: __set и __get

<?php
class foo {

  function __set($name,$val) {
    print(
"Привет, вы попытались присвоить значение $val переменной $name");
  }

  function __get($name) {
    print(
"Привет, вы пытались обратиться к $name");
  }
}

$x = new foo();
$x->bar 3;
print(
$x->winky_winky);
?>

Указание типов для аргументов

В PHP5 вы сможете «сказать» методу, что он должен получить в качестве аргумента объект определённого типа.

Пример 10: указание типов

<?php
class foo {
  
// код ...
}

class bar {
  public function 
process_a_foo(foo $foo) {
   
// Ещё какой-нибудь код
  
}
}

$b = new bar();
$f = new foo();
$b->process_a_foo($f);
?> 

Как вы заметили, перед именем аргумента теперь можно поставить имя его класса, и таким образом PHP5 определит, что переменная $foo должна быть класса foo.

Статические члены класса

Статические члены и статические методы могут использоваться для реализации того, что в ООП называется «методы класса» и «переменные класса».

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

Пример 11: методы класса и переменные класса

<?php
class calculator {
  static public 
$pi 3.14151692;

  static public function add($x,$y) {
    return 
$x $y;
  }
}

$s calculator::$pi;
$result calculator::add(3,7);
print(
"$result");
?>

Исключения

Исключения — это общепринятый подход к обработке ошибок и неожиданных ситуаций в таких языках как Java и C++; в PHP5 перехват исключений реализован с помощью пары «try» — «catch».

Пример 12: Исключения

<?php
class foo {

  function divide($x,$y) {
    if(
$y==0) throw new Exception("деление на ноль недопустимо");
    return 
$x/$y;
  }
}

$x = new foo();

try {
  $x->divide(3,0);   
} catch (
Exception $e) {
    echo 
$e->getMessage();
    echo 
"n<br />n";
    
// Какие-нибудь драконовские меры
}
?> 

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

Исключения, определённые пользователем

Для обработки непредвиденных проблем в ваших программах вы можете определить ваши собственные исключения. Всё, что вам нужно — это просто дополнить (extend) класс Exception, определив конструктор класса и метод getMessage.

Пример 13: Исключения, определённые пользователем

<?php
class WeirdProblem extends Exception {

   private $data;

   function WeirdProblem($data) {
        
parent::exception();
        
$this->data $data;
    }

    function getMessage() {
        return 
$this->data " вызвало какое-то странное исключение!";
    }
}
?> 

Потом, для возбуждения определённого вами исключения используйте конструкцию throw new WeirdProblem($foo); если исключение происходит внутри блока try{}, то PHP5 передаст управление в «catch»-блок для обработки.

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

В целях удобства классы и функции могут быть сгруппированы в пространства имён (namespaces).

Примечение: разработчики отказались от поддрежки этой возможности.

Пример 14: Пространство имён

<?php
namespace Math {

  class Complex {
    
//...код...
    
function __construct() {
      print(
"привет");
    }
  }
}

$m = new Math::Complex();
?> 

Обратите внимание на синтаксис использования именного пространства для обозначения класса, объект которого мы создаём. Пример практического применения: создание одноимённых классов в разных именных пространствах; при этом классы делают отличную друг от друга работу (имея одинаковый интерфейс).

phpclub.ru

PHP 5

PHP 5 was released 4 years after the introduction of PHP 4 to the Internet scene, aimed to bring a brand new functionality to the PHP language. The PHP team focused on what was missing or not well supported in the older versions. The 5th revision is focused on 3 major areas: Object-Oriented programming, XML and MySQL support.

Object-Oriented programming

While this feature was present in PHP 4, PHP 5 presents a completely reworked object model, which now offers:

  • Constructors
  • Destructors
  • Public, protected, and private properties and methods
  • Interfaces
  • Abstract classes
  • Class type hints
  • Static properties and methods
  • Final properties and methods
  • Magical methods

In PHP 5 programmers can also pass objects by reference and not just by value.

All objects are now passed by reference:

<?php
$header = new Content();
$header->text = ‘My header text here’;

$footer = $header;
$footer->text = ‘My footer text here’;

echo $header->text;
// Will be ‘My header text here’ in PHP4
// Will be ‘My footer text here’ in PHP5
?>

Reworked MySQL extension

PHP 5 comes with a completely reworked MySQL extension to provide support for the newest version of MySQL, now labeled MySQLi, which stands for MySQL improved. The new extension offers:

  • Prepared statements
  • Bound input and output parameters
  • SSL connections
  • Multi-query functions
  • MySQL can now use PHP’s new OO model

Reworked XML extension

In PHP4, XML tools did the job, but were not really designed to work together and often patches were required to achieve the needed functionality. PHP5 brings a reworked XML parser, with tools, able to work with one another. The new XML extensions:

  • Can work together as a whole.
  • Are included in just a single XML library: libxml2.
  • Fully comply with W3 specifications.
  • Provide efficient data processing
  • Can provide you with the exact XML tool for the task at hand.

PHP5 also introduces the SimpleXML extension, which allows you to easily handle the data in XML documents, treating it as an array and looping through it.

Exception handling

Exceptions are very popular in other Object-Oriented languages, such as Python and Java, and were completely missing in PHP 4. With PHP 5, exception handling is now present in the PHP core, allowing for a separation of the programming logic and the error handling. The coder can now place them in adjoining blocs for easier referencing.

Exception handling:

<?php
try {
    $cache->write();
} catch (AccessDeniedException $e) {
    die(‘Could not write the cache, access denied.’);
} catch (Exception $e) {
    die(‘An unknown error occurred: ‘.$e->getMessage());
}
?>

Standard PHP Library and Iterators

PHP 5 is the first version to have iterators in the PHP core. Iterators allow the coder to use a for-each loop through various data, such as XML files and database results. In the Standard PHP Library the coders can find a collection of iterators, through which the results of the loop can be filtered or modified.

Directory iteration in PHP 4:

$dir = opendir($path);
while (false !== ($file = readdir($dir))) {
print «$filen»;
}
closedir($dir);

Directory iteration with the new DirectoryIterator:

foreach (new DirectoryIterator($path) as $file) {
print «$filen»;
}

www.ntchosting.com

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем рубрику Веб-программирование и ее раздел PHP. Эта запись является своеобразной вводной инструкцией для новичка по установке PHP 5.6 на Winodws 10. Причем устанавливать PHP на Windows мы будем без использования Apache, вместо него мы будем использовать встроенный в PHP веб-сервер. Сразу оговорюсь, что устанавливать PHP без Apache на Windows даже в ознакомительных целях я бы не рекомендовал, о причинах мы поговорим в конце данной записи, поэтому считайте данную статью ознакомительной.

Итак, аннотация к нашей инструкции для новичка по установки PHP на Windows без Apache:

  1. Мы поговорим о том откуда скачать PHP.
  2. Научимся выбирать версию PHP для установки под наши нужды и технические особенности компьютера: семейство, к которому принадлежит ОС и ее разрядность, заодно посмотрим на разницу между Thread Safe и Non Thread Safe в PHP.
  3. Также мы поговорим про особенности использования PHP для различных целях, а также о базовых принципах работы серверной технологии PHP.
  4. И в заключении мы установим PHP 5.6 на Windows 10 и запустим наши скрипты, написанные на PHP, без использования сервера Apache, воспользовавшись встроенным в PHP веб-сервером и узнаем почему данный подход не самый правильный и удобный даже для знакомства с PHP.

Где скачать PHP 5.6?

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

В данном случае нас интересует версия PHP 5.6 и ее реализация для компьютеров с операционной системой Windows на борту, нажав на кнопку «Download Windows», вы перейдете на страницу, в которой сможете выбрать версию PHP, соответствующую версии вашей ОС и ее разрядности, смотрите скрин ниже.

Я буду скачивать PHP VC11 x64 Thread Safe, так как у меня 64 битная Windows 10. Отмечу: если вы счастливый обладатель Windows XP, то, скорее всего, вы не сможете установить PHP версий 5.5 или 5.6. Скачивать нужно zip архив с файлами PHP, ведь мы же не хотим заниматься еще и компиляцией PHP из исходных файлов.

Разница между Thread Safe и Non Thread Safe в PHP

Итак, когда мы скачивали PHP, то видели, что выбор версии PHP, которую необходимо скачать зависит не только от операционной системы и ее разрядности, но и от какого-то непонятного Thread Safe и Non Thread Safe. Давайте разберемся в чем разница между Thread Safe и Non Thread Safe в PHP. Хотя предыдущая фраза звучит не совсем корректно, так как Thread Safe скорее относится к операционной системе, нежели к языку PHP.

На самом деле – это исторический момент для языка PHP. С октября 2000 года, а именно тогда появился PHP 3.0.17, именно эта версия PHP стала работать на машинах под управлением операционных систем семейства Windows. Появилось разделение версий PHP на Thread Safe и Non Thread Safe. Раньше все версии PHP были Thread Safe.

А теперь о том в чем разница между этими версиями сборки PHP. Вся соль в том, что ОС Windows использует мульти-поточную архитектуру работы, а операционные системы семейства UNIX поддерживают мульти-процессовую архитектуру. Если вы выберете версию PHP, скомпилированную, как мульти-процессовое CGI-приложения, то у вас возникнет много проблем в работе ваших PHP приложений в том случае, если вы будете устанавливать PHP как модуль веб-сервера Apache или IIS.

Всё дело в том, что HTTP сервер в Windows, в частности веб-сервер Apache работает в несколько потоков и PHP, установленный как модуль сервера Apache, будет являться одним из его потоков. Следовательно, PHP для правильной работы с Apache, как его модуль, должен быть скомпилирован именно в режиме Thread Safe.

Немного полезной информации о PHP перед его установкой

Итак, мы не только определились с тем какую версию PHP скачать, но и посмотрели на разницу между версиями Thread Safe и Non Thread Safe. Для начала вспомним публикацию о том, что такое PHP, в которой мы говорили о возможностях данного интерпретируемого языка:

  1. С помощью PHP мы можем создавать различные веб-сайты и веб-приложения.
  2. PHP дает возможность писать скрипты командной строки.
  3. При помощи PHP мы можем создавать приложения с графическим интерфейсом.

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

  • веб-сервер, который, кстати, с недавних пор встроен в PHP и подходит для целей изучения PHP и его возможностей, но никак не подойдет для реальных проектов;
  • браузер, чтобы просматривать результаты наших трудов;
  • СУБД или система управления базами данных, это может быть сервер MySQL, библиотека SQLite, СУБД PostgreSQL;
  • и непосредственно интерпретатор PHP.

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

Таким образом происходит деление функций на функции клиента и функции сервера. В данном случае происходит взаимодействие по протоколу HTTP, который относится к седьмому уровню семиуровневой модели сетевого взаимодействия OSI. Функции клиента выполняет браузер, который посылает запросы серверу. Сервер понимает, что и в каком виде от него хочет клиент по специальным HTTP заголовкам и методам HTTP протокола. Результаты своей работы сервер отправляет клиенту специальным HTTP сообщением, которое получило название ответ сервера. Ответы сервера снабжены так же заголовками, но еще у них есть особые коды состояния, по которым браузер видит, как его понял сервер и что еще нужно сделать, чтобы достичь желаемого результата.

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

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

Ранее мы разобрались с тем, что PHP может работать как модуль сервера, а может быть собран и установлен как обработчик CGI или FastCGI, во втором случае ваш веб-сервер должен исполнять PHP скрипты как CGI-скрипты. Если вы хотите использовать PHP в командной строке вашей ОС, то вам понадобится PHP CLI. Это не входит в рамки данной публикации, поэтому подробно не будем останавливаться, лишь скажем, что в этом случае нам не потребуется ни браузер, ни веб-сервер.

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

zametkinapolyah.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.