Продолжаю делать курс про PHP
Сегодня в программе куки, сессии и азы ООП
Напомню что переменная - это ячейка, в которую вы можете положить что угодно. В php существует 10 типов переменных:
- int
- string
- float
- bool
- null
- resource
- array
- object
- callable
- iterable
Сегодня мы рассмотрим простейшие из них:
- int
- string
- float
- bool
Тип int
Этот тип данных используется для целых чисел (-5, 0, 10, 285).
Например: $productPrice = 1999; (где $productPrice - название переменной, 1999 - значение переменной)
Тип string
Этот тип данных используется для строк ("Привет", 'Добрый день'). Строки могут быть любой длинны, даже пустыми: "";
Например: $productName = "Ноутбук Lenovo";
Строки также можно оборачивать в одинарные кавычки: $productName = 'Ноутбук Lenovo';
Тип float
Этот тип данных используется для нецелых чисел (чисел с плавающей точкой)
Например: $orderPrice = 3540.25;
Тип bool
Это специальный тип данных, который может иметь только два значения, либо true либо false.
Например: $userHasAccount = true; или $isProductAvailable = false;
Давайте приступим к практике
Начнем с того что php код всегда начинается с “<?php”.
Для того чтобы выводить на экран содержимое переменных мы будем использовать функцию echo. Она предназначена для печати элементарных типов переменных. Для более сложных есть другие функции, которые мы рассмотрим позже.
Первое время, пока мы не научились запускать веб-сервер на своем компьютере, будем использовать сайт https://ideone.com для написания кода.
Открываем сайт, нажимаем на нижнюю левую кнопку внизу и выбираем PHP. Дальше можем приступать к написанию кода.
2. Используем тип int
Ссылка на мой код: https://ideone.com/kPwJMD
echo(PHP_EOL); пишем для вывода информации на новой строке
Чтобы запустить исполнение кода нажмите зеленую кнопку submit.
3. Используем тип string
Ссылка на мой код: https://ideone.com/UHXb5A
Самостоятельное задание
Напишите аналогичный код для типов переменных float и bool. Также можете поэксперементировать с типами int и string, создавая переменные с разными названиями и значениями.
P.S. В следующем уроке поговорим про тип данных массив.
P.S.S. Я также дублирую свои посты в телеграмме: https://t.me/php_master_guide
Блог будет поделен на разделы, главы и посты. Все вместе в итоге будет представлять из себя интерактивный учебник.
Список разделов:
1) Основы языка php
2) Знакомство с ООП
3) Основы работы с Linux
4) Инструменты веб-разработчика (git, composer, phpstorm, postman)
5) Вебсервер. Http протокол
6) Основы баз данных. Mysql
7) Фреймворк Laravel
8) Пишем первый проект на Laravel
---
9) Php продвинутый уровень (работа с датами, файлами, регулярные выражения и тд.)
10) ООП продвинутый уровень
11) Паттерны проектирования, чистый код и рефакторинг
12) Rest Api
13) X-debug
14) Основы безопасности
15) Второй проект на Laravel
16) Подготовка с собеседованиям
---
16) Основы фреймворка Symfony
17) Базы данных продвинутый уровень
18) Способы аутентификации
19) Docker
19) Кеширование
20) Очереди сообщений
21) Сокеты
22) Функциональные и юнит тесты
23) Пишем проект на Symfony
Итак, начнем по порядку.
По сути программирование - это процесс написания кода на одном из языков программирования, из совокупности которого в итоге получается полноценное рабочее приложение, программа, игра или сайт. То есть набор взаимосвязанных файлов, в которых написан код.
Язык программирования - это посредник между человеком и компьютером, благодаря которому они общаются и человек говорит компьютеру что, когда и в какой последовательности делать.
Есть человеческий язык: английский, китайский, испанский и тд.
Есть компьютерный язык (еще называют машинный код): некоторый набор 0 и 1, который человеку непонятен.
И для того чтобы человек и компьютер друг друга поняли придумали языки программирования. Они представляют из себя набор строк в каждой из которых написаны инструкции что делать компьютеру. Например:
<?php
$clients = ['Oleg', ' ', 'Dima', 'Kate'];
foreach ($clients as $clientName) {
if (empty($clientName)) {
echo "Привет, незнакомец, у нас новогодние скидки";
} else {
echo "Привет, {$clientName}, у нас новогодние скидки";
}
}
?>
Каждый язык программирования должен обладать 3 возможностями, с помощью комбинаций которых можно написать программу любой сложности:
- операцию присваивания: $name = 'Alex';
- условный оператор: if ($orderSum > $clientMoney) { echo "У вас недостаточно средств!"; }
- циклы: foreach ($boxes as $box) { $box->open(); }
Существует множество языков программирования, у каждого из них свой уровень сложности, уровень популярности и область применения. Но если вы новичок то php лучший выбор и вот почему:
- он проще других в обучении
- он очень популярен уже много лет (на нем писались и пишутся множество крупных проектов)
- вакансий на пхп больше чем кандидатов, если вы достигли уровня middle(всех разработчиков условно делят на junior, middle и senior)
- у него большое комьюнити, и можно легко найти готовое решение любой проблемы или вопроса в интернете
Php — это язык программирования, предназначенный для разработки веб-приложений (в основном сайтов)
Php обладает динамической типизацией, то есть в разный момент времени одна и та же переменная может хранить в себе разный тип данных: массив, число или строку. Однако лучше хранить в одной переменной только один тип данных. Так будет меньше шансов запутаться.
Что касается самого определения переменная - по сути это ячейка, в которую вы можете положить что угодно. О ее содержимом позаботится интерпретатор php (программа на вашем компьютере которая понимает написанный код и выполняет его). Можете удалить ее, можете положить туда что-то другое, можете просто посмотреть ее содержимое.
Php интерпретируемый язык. Это значит, что код, написанный на PHP, не преобразуется в машинный код (набор 0 и 1), а выполняется строка за строкой с помощью интерпретатора php, который читает каждую из них и выполняет то, что там указано.
Преимущество php заключается в том, что он содержит готовые модули для работы с базами данных, файлами, датами и многим другим. Все это очень упрощает работу на нем.
Php код всегда начинает с <?php. Так веб-сервер (готовая программа обрабатывающая запросы пользователя к нашему сайту) понимает что код в файле написан на языке php.
Php код можно легко встроить в HTML: <p><?php echo(«Hello world»); ?></p>
У php есть множество версий, последняя из которых 8-я, но большинство сайтов написаны на 5-ой и 7-ой версиях, так как код для каждой из них немного отличается, и переписывание сайта на новую версию php занимает много времени и не всегда оправдано.
Представим у вас есть сайт. На вашем компьютере установлено 2 программы:
- веб сервер. Программа, принимающая запросы от пользователей. Вам нужно просто установить ее и настроить на своем компьютере.
- php интерпретатор. Программа, которая понимает написанный вами код.
Пользователь пишет в адресной строке yoursite.com, браузер с помощью службы днс узнает что этот адрес относится к вашему сайту и отправляет запрос на ваш веб сервер, веб-сервер перенаправляет запрос php интерпретатору, который читает главный файл вашего сайта: index.php и выполняет написанные там инструкции. В итоге получается html код, который возвращается к веб-серверу, а от него браузеру. А пользователь уже видит преобразованный браузером ответ в удобной форме.
P.S. В следующем посте поговорим подробнее о понятии переменной и типах данных в php.
Привет, друзья. Я около 5-ти лет работаю php разработчиком. И вот недавно мне пришла в голову идея создать блог, в котором я буду освещать все что необходимо знать разработчику на php с самого нуля. Гайд от полного нуля до уровня middle. Смысл этого блога помочь новичкам, которые только задумываются о том чтобы учить php, или недавно начали. А для меня это будет возможность повторить и систематизировать знания.
Я постараюсь превратить это блог в полноценный гайд для начинающих программистов, прочитав все посты которого можно будет получить хорошую базу знаний и без труда найти первую работу, либо апнуться на уровень выше если вы джун. В постах будет как теория так и практика, с конкретными рабочими примерами.
Я долгое время писал заметки по разнообразным темам для себя, и сейчас это будет хорошим подспорьем для того чтобы дополнить их и преподнести информацию максимально подробно для тех кому это полезно. Понимаю что в интернете гора информации на любую тему, но она либо плохо структурирована либо ограничивается только самыми начальными темами.
В общем надеюсь будет интересно. Хочу еще раз подчеркнуть что блог направлен именно для начинающих. Сейчас я готовлю первые посты, поэтому подписывайтесь если вам эта идея интересна.
P.S. если у вас есть идеи как можно реализовать идею как можно лучше, жду вашим комментов)
Итак, меня сделали админом этого сообщества :) К сожалению, постов тут нет, так что модерировать особо нечего. Старые посты тоже модерировать уже нельзя :)
Попробую исправить ситуацию :) Напишу пост сам и забаню кого-нибудь в комментариях :)
Насколько нелепо большие проекты вы писали на простых бесплатных cms? В моей практике, присутствует интернет магазин с собственным движком и практически годом разработки на wordpress и крупный проект в сфере телекома ( https://irt24.ru/ ).
Проект в сфере телекома, продажа интернет и ТВ тарифов, по сути сайт посредник(диллер) продающий тарифы Ростелекома/МТС и прочих через свой функционал.
На старте функционал выглядел не очень большим, на пару месяцев работы, подумаешь парочка тарифов и не такое делали. Максимум 6-8 месяцев, хотя сроки я не взялся сразу точно назвать.
На практике оказалось, что количество параметров редактируемых у этих тарифов физически в админке выглядит как простыня 1000px на 9000px, это сотни параметров различающихся в зависимости от группы тарифов и обладающие сложными взаимосвязями между собой.
Там где на сайте скромный каталог из четырех разделов, в админке скрыто ещё 10-к каталогов взаимосвязанных друг с другом. Тарифы телевидения содержат каналы, каналы распределяются по пакетам каналов, делятся по тематикам итд.
Стоит подметить, админка wordpress без особых проблем справилась с подобной загрузкой, каталоги весьма удобно распределились в меню, параметры редактирования тарифа органично распределись на всем доступном пространстве экрана администратора.
Один экран, с настройками роутеров(подобные экраны ещё два вверх, несколько вниз):
На самом сайте, разумеется фунционал тоже реализовывался без лишней скромности и с максимальным размахом. Беглый просмотр функционала Ростелекома и МТС по тематике показал крайнюю их узость и отсутствие массы ценных и необходимых пользователю функций.
Зато данные функции в избытке нашлись на американских площадках, откуда и начали щедро заимствоваться, попутно максимально расширяясь и усложняясь.
Так родились карточки генерируемые вплоть до запятой под каждый тариф и даже в мелочах редактируемые через админку, умная корзина позволяющая детально настроить все основные и дополнительные опции для тарифа, разумеется отдельные страницы для каждого тарифа позволяющие сделать тоже самое +дающие развернутое описание опций.
Тарифов оказалось довольно много и им явно нужен каталог для удобной сортировки и подбора нужного. С одной стороны, для этих целей могло хватить обычного каталога со списком тарифов, но это не создает достаточной боли в процессе разработки.
Поэтому был добавлен аяксовый каталог-фильтр поверх основного каталога, позволяющий тыкая параметры(вроде скорости интернета) тут же формировать список подходящих тарифов на странице. Разумеется, необходимо что бы в фильтре остались активны только те параметры которые встречаются среди уже отобранных тарифов.
То есть, если безлимитной мобильной связи среди тарифов со скоростью интернета 500 мб/с нет, то данная опция становится недоступной и мы показываем подсказку почему так произошло.
Впрочем, выше сказанное указывает только на фильтр. Где же каталог? Разумеется, наш фильтр должен уметь переключаться между категориями каталога, причем проверяя сможет ли он это сделать с уже выбранными опциями.
Обязательно, нужно добавить в фильтр возможность подбора по цене, это очень важно. Причем ползунков там должно быть два и оба в режиме реального времени оценивать своё состояние, нельзя прокрутить ползунок в состояние в котором фильтр не найдет тарифа.
Так же, никогда нельзя забывать про мобильные устройства, все должно работать на любом смартфоне/планшете/умном холодильнике(кто знает как жизнь повернется?)
И так, тарифы подобраны, дальше нужно их сравнить. Здесь нужно реализовать функционал сравнения по каждой опции и от щедрой души разрешить сравнивать между собой даже тариф только с интернетом, против тарифа только с ТВ. Вдруг появятся желающие(ценители).
В целом, реализация подобных монстров в одиночку на WP, это довольно спорная идея. Хотя вполне возможно, структура кода тоже получается максимально простой.
Чистый php, общение с базой данных через базовый функционал WP.
Jquery и парочка простых библиотек.
Файлы в коде изолированы по модулям, модуль сравнение содержит все свои стили, скрипты и файлы php шаблонов. То есть, практически автономен, имеет свой css и свой js, не подгружаемые другими модулями. Заметных сложностей с поиском кода не было :)
Имеется папка с большим количеством файлов формата CSV, все они одной структуры(столбцы одинаковы)
Файлы CSV являются текстовыми и имеют структуру через разделение символом ;
Сделаем обработку файлов и сохранение в базу данных
В общем виде, открываем файл на чтение, читаем каждую строку, получаем данные столбцов и сохраняем в таблицу:
$DIR = 'data/';
$files = scandir($DIR);
foreach($files as $k => $file)if($file!='.'&&$file!='..'){
$cfile = $DIR.$file;
$pi=pathinfo($cfile);
$open = fopen($cfile, "r");
$strnum=0;
while (($data = fgetcsv($open, 10000, ";")) !== FALSE){
$data = array_map( "convert", $data );
if($strnum>$proc['pos']){
DB_insert($DB,$data,$file);//записываем в таблицу
}
}
fclose($open);
}
function convert( $str ) {//преобразуем кодировку для базу данных
return iconv( "Windows-1251", "UTF-8", $str );
}
Код обходит указанную папку, открывает каждый файл и заносит данные в базу данных. Процесс долгий и его необходимо выполнять в консоли или реализовывать процесс сохранения этапа работы в отдельный файл и при новом вызове брать параметры.
function DB_insert($DB,$data,$file){
$values = array();
$kol=0; $i=0; foreach($polya as $k => $v){
if(isset($data[$i])&&$data[$i]!='') $values[] = '"'.$DB->rescape($data[$i]).'"';
else { $values[] = '""'; $kol++; }
$i++;
}
if(count($polya)!=$kol){
$sql = 'INSERT INTO tablevins VALUES(0,"'.$DB->rescape($file).'",'.implode(',',$values).');';
$rez = $DB->QUR($sql);
}
}
Реализация WEB интерфейса для поиска данных
Поиск происходит по двум полям VIN и номеру кузова. Опция «тип поиска» позволяет объединять искомые по условию «И» или «ИЛИ»
Функция для поиска в таблице данных, универсальная и получает опции поиска через переменную $data
function DB_search($DB,$data){
$out = array(); $usl = array();
foreach($data['where'] as $k => $v){ if($v!=''){
$usl[] = $k.' LIKE "%'.$DB->rescape($v).'%"';
}
}
if(count($usl)){
$tip = ' OR '; if($data['tipsearch']==1) $tip = ' AND ';
$sql = 'SELECT * FROM tablevins WHERE '.implode($tip,$usl);
$rez = $DB->QUR_SEL($sql);
if(!$rez['err']&&$rez['kol']){ $out = $rez['rez']; }
}
return $out;
}
Более подробно можно посмотреть на https://alneo.ru/2022/12/poisk-v-fajlah-csv/
Народ, спасите помогите. Нужно подключить грёбаный пэйпал к сайту, а я никогда этого не делал. Мануалы все 2013-2015 годов, или я гуглить не умею. На кворке все, кто отзываются - по итогу оказываются ни в зуб ногой, и с пэйпалом вообще не знакомы. А один "программист" получил предоплату 50% напрямую на карту, и слился в закат. Какой-то Бекзат из Бишкека, можете ему вместе со мной послать лучей гавна, если хотите.
Если кто умеет, буду финансово и морально благодарен за любую помощь. В идеале, конечно, просто дать готовый скрипт, ну, или хотя бы наставить меня на путь истинный.
В чем проблема: пэйпалу нужно как-то передать три параметра, ID товара, цену товара, и ID пользователя сайта, который оплачивает. А после успешной оплаты получить эти два ID обратно. Всё, с дальнейшей обработкой справлюсь сам.
Чукча пхпшник начинающий. В основном, чукча - сеошник))) Без рейтинга, и всем спасибо!
Для быстрой связи тг seotokarev