Современный PHP без фреймворков
Только сегодня видел такой мем на Pikabu, а только что в ленте с таким заголовком выдало гораздо более смешную вариацию на тему!
Php Laravel 5.5.* Нужна подсказочка
Спасайте, угробил 2 часа на чтение доков eloquent
Не помогло =(
У меня есть таблица A, связующая таблица B, и таблица C
A и C не имеют связей, B в свою очередь содержит A_id,C_id
У меня есть A_id Из model->id
Нужно выполнить select C.* from B,C where B.C_id = C.id AND B.A_id = (model->id)
При этом не прибегая к костылям DB и подобным.
Научу программировать #1 PHP. Управляющие конструкции
Ранее в сериале:
https://new.pikabu.ru/story/nauchu_programmirovat_1_php_upravlyayushchie_konstruktsii_5763629
https://new.pikabu.ru/story/nauchu_programmirovat_1_php_baza_5758846
https://new.pikabu.ru/story/nauchu_programmirovat_2_sistemyi_kontrolya_versiy_git_5701751
https://new.pikabu.ru/story/nauchu_programmirovat_1_sistemyi_kontrolya_versiy_git_5699027
https://new.pikabu.ru/story/nauchu_programmirovat_01_5696264
https://new.pikabu.ru/story/nauchu_programmirovat_0_5693683
По всем вопросам в телеграмм, я там часто.
ссылка на Телеграмм
Ранее мы остановились на разделе PHP объекты. Но прежде чем начать, хочу осветить такой материал, как управляющие конструкции и функции, так как без этого материала будет сложно двигаться дальше.
И так начнем.
Любой сценарий PHP состоит из последовательности инструкций.
Хотелось бы дать Вам понимание, что такое инструкция. Инструкция - это любое действие присваивания, цикла, и т.д., после инструкции ставится ";". Иными словами когда мы поставили в конце нашей строки ; мы создали инструкцию.
$a = 5; - инструкция
foreach ($i = 0; $I < 5; $I++) {} - тоже инструкция
И так, давайте разберем условие: IF () {}
if - одна из самых важных конструкций в любом языке программирования. С помощью этой конструкции можно делать различное выполнение программы при возникновении, когда условие выполняется в "true" или "false"
Сама конструкция блока выполнена в стиле С.
if ($a > $b ) {
$c = $a;
print_r ($a);
}
В данном примере мы сравнили две переменных а и b и при условии, что а больше присвоили с значение а, а потом вывели.
Разрешается использовать конструкцию if в более простой форме, если после возникновения условия true у нас один обработчик:
if ($a > $b) print_r($a); //в данном примере мы просто опустили скобки.
При этом конструкция if может быть вложена в другую конструкцию if
if ($a > $b) {
if ($a < $c) {
print_r ($a);
}
}
Такая конструкция называется Условие.
А что если бы нам хотелось вывести $b, если $b меньше $a?
Для этого в блоке if предусмотрена конструкция else. Синтаксис:
if ($a > $b) {
print_r ($a);
} else {
print_r ($b);
}
Это довольно простая конструкция, если а больше b, тогда выведем а иначе b. Думаю тут все просто и понятно.
Но if имеет еще один тип записи,
if ($a > $b) {
print_r($a);
} else if ($a == $с) {
print_r($c);
} else {
print_r($b);
}
Вспомните нашу запись вы примерах Выше. Где мы делали вложенное условие. Наша запись выше и запись со вложенными условиями не равны в данном примере, так как вложенное условие в том случае выполнится при условии, что а больше b. В данном если меньше.
H1. В чем отличие данного
if ($a > $b) {
if ($a < $c) {
print_r ($a);
}
}
if ($a > $b) {
print_r($a);
} else if ($a < $с) {
print_r($c);
} else {
print_r($b);
}
Кроме того, существую еще и краткие формы записи данных конструкций (или альтернативные конструкции). Все отличия в том, что вместо {} фигурных скобок, ставится двоеточие и блок endif;
Например эти две записи эквивалентны:
if ($a > $b) {
print_r ($a);
}
<?php
if ($a > $b) :
?>
А больше b
<?php
endif;
?>
h2. попробуйте самостоятельно реализовать следующее условие:
а больше 5, но меньше b которое равно 7
Дальше рассмотрим циклы, когда и как применяются
Научу программировать #1 PHP. База
В этот раз, на основе комментов, которые прислали подписчики будем использовать уже php для работы с git. Карма больше 150 теперь после всех уроков буду прикреплять еще и видео (ну постараюсь по крайней мере). Начнем с первого урока по PHP. Ибо я как дебил не могу придумать нормальную задачу для git. В данном уроке по тексту есть домашка.http://sandbox.onlinephpfunctions.com - песочница для заданий
И так начнем. Что такое PHP? Вообще все языки программирования делятся на два типа:
1. Компилируемые
2. Интерпретируемые
В чем между ними разница? Разница конечно огромна и существенна. А именно состоит в следующем.
Давайте посмотрим, что происходит когда вы пишите на языке программирования C++ или любом другом компилируемом языке программирования.
Вы пишите код, добавляете классы, выделяете память для переменных и т.д., далее Вам надо скомпилировать Ваш код в машинный код, который Вы сможете запустить на своей машине. Преимущества данного подхода - скорость выполнения. Но при этом каждый раз, когда Вы сделаете изменения, Вам придется собирать (компилировать) программу заново.
Мы не будем углубляться в то как это работает.
Интерпретируемые языки. Тут код не переводится в машинный, интерпритатор каждый раз когда вы обращаетесь к программе читает код и выполняет его. Собственно тут есть и минусы он менее производительный.
Все изменения, которые будут внесены в код программы будут применены сразу при следующем вызове данной программы. Именно так и работает PHP.
Теперь мы с Вами знаем, что PHP интерпретируемый язык программирования. У него есть специальный интерпретатор, который переводит наш код (или наши команды) в понятный машине код.
Каждая строка в PHP заканчивается символом ;
Давайте рассмотрим простые примеры, на которых мы будем основываться дальше.
Первое - это переменные.
Переменные в php начинаются символом $, после может стоять _. Переменная не может начинаться с числа.
$a = 'Vasja'; // верное название переменной
$_a = 'Vasja'; // тоже верное название переменной
$23 = 'Vasja'; // тут возникнет ошибка
Переменные в php не имеют типизации, т.е. $a в нашем примере может быть как числом, так и строкой. При этом ошибки не возникнет:
$a = 'Vasja'; // верное название переменной
$A = 3; // тоже верное название переменной
h1 - попробуйте выполнить такой код дома, что произойдет? Почему?
Вообще очень плохая практика называть переменные в PHP а,b,c, так как, когда Вы начнете просматривать код после того, как не работали с ним пару месяцев, то долго будите понимать, что имели ввиду в данной переменной. Называйте их по смыслу:
$name = 'Vasja"; // понятное название переменной
Переменные используются везде и всюду. Без них невозможно написать не одну программу.
Кроме переменных в PHP есть константы, каков их синтаксис:
объявление констант применяется по такому же правилу, что и переменных, а именно правила написания. _, a-z. Есть правило писать константы большими буквами, а если несколько слов, то через _, между этими словами.
define("CONST_VALUE_DEFINE", "1"); // хорошее объявление констант
define("2_CONST_VALUE_DEFINE", "1"); //ошибка при объявлении
define("__FOO__", "test.txt"); // если PHP зарегистриует однажды такую константу, то скорее всего получите невеную работу скрипта
Хотелось бы отметить, что есть магические константы, __DIR__ __FILE__ __FUNCTION__
они не совсем являются константами конечно.
Коротко по ним пробежались, ниже приведу на типы данных в PHP, кто их не знает настоятельно рекомендую к прочтению.
http://php.net/manual/ru/language.types.php
Мы же пойдем далее, и так у нас есть еще тип дынных как массив.
Нам не требуется для создания массива, выделения памяти для него руками.
Вообще все структуры данных такие, как:
деревья
список
очередь
вектор
Хэш-таблицу
коллекцию
Все это можно реализовать с помощью массива в php (иногда не хватает создания пользовательских структур, как типа данных, но об этом позже).
Массив может содержать в себе другой массив, или ключ-значение, или ключ-массив и т.д.
массив объявляется
array();
$myArray = array(); // инициализация пустого массива
Давайте создадим и выведем на экран наш массив:
$myArray = array();
var_dump($myArray); - функция выведет нам какой тип имеет наша переменная $myArray и что находится внутри нее.
h2.
$testArray = array(1,2,3,4,5,6);
добавьте в массив несколько параметров, удалите один из параметров массива, выведите 5-ый элемент массива.
массивы могут быть многомерные:
например:
$testArray = array(1 => array('1' => array( 'Vasja' ) ) );
Есть и короткая форма объявления массива:
$array = []; она введена в php 5.4, на мой взгляд она компактнее и удобней.
h3.
$testArray =[
'user' => ['name' => 'Ivan'],
'card' => ['number' => '1234 5678 9087 6543' ]
];
Выведите имя и номер карты пользователя.
В следующей статье остановимся более подробно на объектах, зачем они и как с ними работать. Материал довольно обширный.



