Рубрики
Без рубрики

Узнайте новый язык: мигрировать от JavaScript на PHP

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

Автор оригинала: David Brumbaugh.

Вступление

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

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

Зачем учиться PHP, если вы уже знаете JavaScript?

Там некоторые задачи, которые лучше подходят для выполнения на стороне сервера. Это правда, что с появлением Node.js, Server-Side JavaScript стал реальностью. Тем не менее, PHP все еще запускает много веб, особенно WordPress, который приводит к проемам более 25% сети.

Я познакомился с множеством интерфейсных разработчиков на кода-то, что нужно было сделать «несколько небольших изменений» в PHP к теме WordPress, но не знал PHP. Они обычно расстроили, потому что очевидное сходство между двумя языками было более запутанным, чем очевидные различия.

Несмотря на то, что Node.js нажимает JavaScript на сервер, тот факт, JavaScript был разработан с начала, чтобы запустить внутри браузера – поэтому первичная прочность – это первичная работа. PHP, с другой стороны, был разработан в виде языка сервера; И это его основная сила.

Языковая конструкция: JavaScript против PHP

JavaScript был создан Brenden Eich через 10 дней Хотя он работал на Netscape, запустить в браузере Netscape. Его дизайн был сильно повлиял на схему, диалект Lisp и Self, диалект SmallTalk. Очень маленький JavaScript связан Java. Стандарт языка JavaScript управляется ЭКМА Отказ

Разработка JavaScript была в основном обусловлена компаниями веб-браузера. С другой стороны, как настоящая Проект с открытым исходным кодом У PHP имел больше влияния сообщества чем JavaScript. Первоначально он был разработан для Простые скрипты для не программистов Отказ Некоторые из функций, которые делают его очень прощающим для не программистов, расстраивают опытных программистов. Принимая во внимание, что JavaScript заимствуют сильно из Lisp и SoldTalk, PHP, в значительной степени заимствования от Perl , C ++ , C и Java – и размораживание других языков.

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

Начиная

В JavaScript вы можете иметь код в Теги, или в файле с расширением .js. В PHP вам нужно оба Расширение файла .php и специальные теги для указания кода PHP.

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

Большинство серверов требуют, чтобы файлы PHP имеют расширение .php. Вы увидите два общих шаблона кодирования в PHP-файлах. Файлы, которые являются все или в основном, PHP и HTML, которые содержат небольшой код PHP.

В основном PHP код с небольшим HTML


A little bit of HTML in the middle.

HTML с встроенным PHP






The Time Is

Server Time is:

Переменные и операторы

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

Правила именования

PHP – Переменные в PHP Должен Начните с знака доллара $ с последующим названием переменной. Имя переменной Должен Начните с подчеркивания (_) или буквы. Остальная часть имени переменной может состоять из букв, цифр или подчеркиваний.

Если переменная начинается с Два Знаки доллара, это динамическая переменная. Смотрите ниже для примера.


$ Не jQuery

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

Глобальный спектр

Глобальные и местные навесы являются противоположностями в PHP и JavaScript. Общая точка путаницы для программистов JS, мигрирующих на PHP, является то, что в Javasscript любая переменная, не явно локальная, не является глобальной. В PHP любая переменная не явно глобальная не является локальной.


Операторы, строки и свободные типы данных

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

Одной из точек путаницы между JavaScript и PHP является оператор Concatenation String. В JavaScript знак плюс, (+), используется для арифметического добавления, так и для конкатенации строки. В PHP, однако, точка (.) Используется оператор конкатенации строки. Замечательно, программисты JavaScript будут принять оператор Concatenation String для обозначения точки объекта.

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

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


Объекты и массивы

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

PHP имеет два типа массивов: индексированные и ассоциативные. Эти массивы могут быть многомерными. PHP также имеет классы и объекты. Массивы и объекты не взаимозаменяемы в PHP.

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

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

Примеры объявления массива PHP

 'Value1', 'key2'=>'Value2');

// For PHP version 5.4 and beyond:
$a = ['key1'=>'Value1', 'key2'=>'Value2'];

echo $a['key1']; // Value1

// Indexed Arrays use a zero based index
$a = array(); // Empty Array
$a[] = 'position 0'; // Empty [] appends to array
$a[] = 'position 1';

// The following does the same thing:
$a = array('position 0', 'position 1');

// Version 5.4 and after:
$a = ['position 0', 'position 1'];

echo $a[1]; // position 1

/*
Consider the following matrix:
     |col1            | col2
row1 | Cell Value 1,1 | Cell Value 1,2
row2 | Cell Value 2,1 | Cell Value 2,2
*/
// Multidimensional are "arrays of arrays" and can be declared using any valid array declaration syntax combination:

$m['row1']['col1'] = 'Cell Value 1,1';
$m['row1']['col2'] = 'Cell Value 1,2';
$m['row2'] = array('col1'=>'Cell Value 2,1', 'col2'=>'Cell Value 2,2'); 

echo $m['row1']['col1'];  // Cell Value 1,1
echo $m['row2']['col2']; // Cell Value 2,2


?>

Синтаксис для проигравшего на ассоциативный массив, используя Foreach выглядит немного отличается от эквивалентного итератора в JavaScript.

 $row) {
    foreach($row as $col_key => $cell) {
    echo "$row_key, $col_key: $cell
"; } } /* Output: row1, col1: Cell Value 1,1 row1, col2: Cell Value 1,2 row2, col1: Cell Value 2,1 row2, col2: Cell Value 2,2 */ ?>

Объектные различия

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

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



prop; // Prints the value of the property
// Example of dynamic property:
$v = 'prop';
echo $obj->$v; // Same result

// Common mistakes trying to use Javascript like syntax:
echo $obj.prop; // ERROR!!!
echo $obj['prop']; // ERROR!!!
?>

Видимость недвижимости

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

JavaScript использует подход «все – объект» к OOP. В PHP классы определяют, какой объект может быть. Объекты являются экземплярами классов.

private_property = $value;
    }
   protected function get_the_private_value() {
       return $this->private_property;
   }
}

$obj1 = new BaseClass();  // An object is an instance of a class
echo $obj1->public_prop1; // OK
echo $obj1->public_prop2;// OK
$obj1->set_private_property('something'); // OK
echo $obj1->protected_property; // Access error
echo $obj1->private_property; // Access error;
echo $obj1->get_the_private_value(); // Access error

?>

Наследование

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

protected_property; // OK (uses protected base class property)
     }
    function get_private_ok() {
        return $this->get_the_private_value(); // OK (uses protected base class method)
    }

   function get_private_error() {
       return $this->private_property; // Access Error: Cannot directly access private value from a base class.
   }
}

?>

Json.

JSON – это стандартный механизм де-факто для передачи объектов. Если вы являетесь программистом JavaScript, используя PHP, вы почти наверняка будете проходить объекты обратно в формате JSON.


Контрольные структуры

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

Следующий код показывает примеры общих структур управления PHP.

Если/потом/иначе

$a = 1;
$b = '1';

// Type insensitive compare
if ($a == $b) {
 // This code will execute
} else {
// This code will not
}

// Alternative structure
IF  ($a === $b) : // Type sensitive compare.  IF keyword case insensitive;
   // This code will not execute
else:
  // This code will execute
ENDif; // The endif keyword is not case sensitive

В то время как Как и если высказывания, цикл while while может быть похож на JavaScript, но есть Варианты альтернативных синтаксисов Отказ

$c = 10;
$d = 0;

//Typical while syntax - very similar to JavaScript
while( $d < $c) {
  $d++; 
}

// Alternative while syntax - also demonstrates case insensitivity
while ($c === $d) :
   $c++;
EndWhile;

Для петлей

Вы уже видели foreach построить в действии с помощью итераторов массива выше. Как JavaScript, PHP также имеет для петли контрольная структура. И у него также есть альтернативный синтаксис.

// Typical For Loop
for ($i = 0; $i < 100; $i++) {
  // Execute this code 100 times;
}

// Alternative for loop
for ($i = 0; $i < 10; $i++ :
   // Execute this code 10 times;
endfor;

Как JavaScript, PHP также имеет Переключатель Контрольная структура, которая следует по аналогичной форме к примерам выше.

Функции

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

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


Резюме

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

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

Основное сходство включает стандартные контрольные структуры, операторы сравнения и как функции определены и используются.

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