предисловие
Я хочу спросить себя, зачем учитьсяPHP
,чтоPHP
, После обучения, что я могу сделать, будущее развитие, то, как выучить язык программирования, как давать советы по обучению.
php
Это язык обучения для предполагаемых препроцессоров гипертекста широко используемого языка сценариев сценариев с открытым исходным кодом, который может быть встроенным вHTML
Средний, особенно подходитweb
разработка.
PHP
встроенный на стороне сервераHTML
Скриптовый язык для документации. Стиль языка похож наC
В настоящее время этот язык широко используется многими программистами веб-сайтов. использоватьPHP
Могут быть разработаны различные интерактивные динамические веб-страницы.
Так как же мы понимаем динамические веб-страницы? Давайте поговорим об этом далее:
В чем разница между динамическим сайтом и статическим сайтом?
- Динамические веб-сайты: веб-сайты, которые могут взаимодействовать с базами данных.
- Статический веб-сайт: не может взаимодействовать с базой данных
Также такие какLAMP
Что обозначают эти слова? Обычно используется в PHP:
Что такое LAMP? Вам нужно понять?
L:LINUX
A:Apache
M:mysql
P:PHP
Масштабируемость сообщает следующие величины, которые нам нужно постепенно понимать.
Настройка среды PHP (LAMP, LNMP, LNMPA)
LAMP
: Linux+Apache+MySQL+PHP
LNMP
: Linux+Nginx+MySQL+PHP
LNMPA
: Linux+Nginx+MySQL+PHP+Apache
WAMP
: Window+Apache+MySQL+PHP
Интегрированная среда:wampserver, xampp, phpstudy
апач, веб-сервер
Apache
является наиболее используемым в миреweb
Серверное программное обеспечение, которое может работать практически на всех широко используемых компьютерных платформах, широко используется благодаря своей кроссплатформенности и безопасности.web
Одно из серверных программ. Это быстро, надежно и простоapi
расширение.
Итак, давайте войдемPHP
Мир, пойми его грамматическую структуру!
базовая грамматика
PHP
Структура документа: 1. Расширение документа.php
2. Обратите внимание, что имя файла не должно использовать китайский язык и не должно содержать специальных символов
PHP
Стиль маркера:
- стандартный стиль
Взгляните на пример кода ниже:
<?php 代码段;?>
- короткий стиль
Взгляните на пример кода ниже:
<?代码段;?>
Примечание: требуется настройка
PHP
конфигурационный файлphp.ini
серединаshort_open_tag=On
, начать сначалаApache
сервер может
-
ASP
стиль:
Взгляните на пример кода ниже:
<% 代码段; %>
Примечание: требуется настройка
PHP
конфигурационный файлphp.ini
серединаasp_tags=On
, начать сначалаApache
сервер может
PHP
Пример грамматического стиля:
<?php
echo 'this is dada show dada';
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>55555--<?php echo 'hello world';?></title>
<style media="screen">
h1{
color:<?php echo '5555';?>;
}
</style>
<script type="text/javascript">
alert('hello world');
</script>
</head>
<body>
<h1>this is dadada show time<?php echo 'dada';?></h1>
</body>
</html>
<?php
// 标准风格的写法
// echo 输出一个或者多个字符串
/*
echo 'this is a dada';
echo '<br/>';
echo 'hello world';
*/
echo 'this is dada show time';
учитьсяphp
Необходимы инструменты, вот наиболее часто используемыеphpstorm
говорить оphpstorm
установка и использование
phpstorm
даJetBrains
Рекламный ролик, разработанный компаниейPHP
Интегрированные инструменты разработки, которые могут помочь пользователям кодировать его в любое время, запустите тесты устройства или предоставляют визуальныеdebug
Функции.
скачать
Входитьphpstorm
Официальный сайт, нажмите“downLoad”
кнопку для входа на страницу загрузки.
Наконец, дважды щелкните значок на рабочем столе.
Структура синтаксиса PHP
php
Примечание по именованию файлов:
Примечания к переменным:
тип данных:
Специальные символы:
Разница между одинарными и двойными кавычками
- Двойные кавычки анализируют переменные, одинарные кавычки не анализируют переменные
- Одиночные цитаты быстро
- Двойные цитаты раздают все сложные эфиры, одиночные цитаты только решить
\
и\\
Два escape-символа
значение фигурных скобок
- превратить переменные в целое
- Первое
${变量名}变量名
; - секунда
{$变量名变量名}
;
Достигается формой функции временного преобразования
-
intval(变量)
Преобразовать в целое число -
strval(变量)
преобразовать в строку -
boolval(变量)
Преобразовать в логический тип
постоянное преобразование
-
settype
(переменная, заданный тип) заданный тип переменной -
gettype
(переменная) получить тип переменной
Библиотека функций переменных определяет тип переменной
-
is_int
(переменная) > Обнаружить целое число -
is_string
(переменная) > Определить тип строки -
is_array
(переменная) > Определить тип массива -
is_resource
(Переменная) > Определить тип ресурса -
is_object
(Переменная) > Определить тип объекта -
is_null
(переменная) > проверить нулевой тип -
is_numeric
(Переменная)> числовое значение обнаружения
постоянный
- В: Что такое константы?
- Ответ: Константы — это противоположность переменных, которые нельзя изменить во время выполнения скрипта.
системная постоянная
-
PHP_VERSION
:получитьphp
Версия -
PHP_OS
: получить операционную систему сервера -
M_PI
:PI
значение
- Меры предосторожности:
- Имя константы не предшествует
$
символ - Начните с буквы или подчеркивания и попробуйте использовать заглавные буквы
- Константы определены и не могут быть изменены или отменены
- Значение константы может быть только скаляром, а ресурсы могут использоваться, но это не рекомендуется.
- Константы чувствительны к регистру по умолчанию
Проверить, определена ли константа
-
defined
функция -
var_dump
(defined
Переменная)
магическая константа
-
__LIEN__
получить номер строки -
__FILE__
Получить полный путь и имя файла файла -
__FUNCTION__
имя функции -
__CLASS__
своего рода -
__METHOD__
метод -
__DIR__
Возвращает путь, по которому находится файл
Соедините наши переменные в виде точек
Произвольно сгенерировать проверочный код
Давайте взглянем на следующий пример кода:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script src="jquery-2.2.3.js" type="text/javascript"></script>
</head>
<body>
<?php
header("content-type:text/html;charset=utf-8");
$str = '';
$rand = mt_rand(1000, 9999);
$str.='<span style="color:rgb('.mt_rand(0, 255).',
'.mt_rand(0, 255).','.mt_rand(0, 255).')
">'.mt_rand(0, 9).'<span>';
$str.='<span style="color:rgb('.mt_rand(0, 255).',
'.mt_rand(0, 255).','.mt_rand(0, 255).')
">'.mt_rand(0, 9).'<span>';
$str.='<span style="color:rgb('.mt_rand(0, 255).',
'.mt_rand(0, 255).','.mt_rand(0, 255).')
">'.mt_rand(0, 9).'<span>';
$str.='<span style="color:rgb('.mt_rand(0, 255).',
'.mt_rand(0, 255).','.mt_rand(0, 255).')
">'.mt_rand(0, 9).'<span>';
?>
<label for="check">请输入验证码:</label>
<div id="hiddent_val" style="display: none;"><?php echo $str ?></div>
<input type="text" name="check" id="check_val"/><?php echo $str; ?>
<br/>
<input type="button" onclick="javascript:check();" value="提交"/>
<script>
function check(){
var v1=$("#hiddent_val").text();
v1 = v1*1;
var v2=$("#check_val").val();
v2 = v2*1;
if(v1==v2){
alert('true');
}else{
alert('false');
}
}
</script>
</body>
</html>
функция даты
Код формата функции даты:
data($format[,$time=time()])
time():
Y:年,m:月, d:日, h:小时, i:分钟, s:秒
w:星期一到星期天 0表示星期天
设置时区:函数形式
date_default_timezone_get()
date_default_timezone_set($timezone);
предопределенные переменные
Предопределенные переменные: переменные, которые были определены в системе следующим образом:
-
$_POST:http
-post
переменная, которая получает форму сpost
данные отправлены -
$_GET:HTTP
-get
переменная, которая получает?
формальные данные параметра -
$_FILES:HTTP
переменная загрузки файла -
$_SERVER
: переменные сервера и среды выполнения -
$_ENV
: переменная окружения -
$_SESSION
: переменная сеанса -
$_COOKIE
:HTTP Cookies $_REQUEST:$_GET+$_POST+$COOKIE
-
$php_errormsg
предыдущее сообщение об ошибке -
$GLOBALS
SuperGlobals, встроенные переменные, которые всегда доступны во всех областях
Switch...case
покажи намSwitch...case
Пример кода выглядит следующим образом:
<?php
$a = 2;
switch ($a){
case 1:
echo 'a<br/>';
break;
case 2:
echo 'b<br/>';
break;
case 3:
echo 'c<br/>';
break;
default:
echo '默认的执行';
}
Например
покажи намfor
Пример кода выглядит следующим образом:
<?php
//1到100的数进行相加 5050,
//1+2+3+4
$sum =0;
for($i=0;$i<101;$i++){
$sum = $sum+$i;
}
echo $sum;
echo '<hr/>';
//1到100能够被2整除的数,
for($i=1;$i<101;$i++){
if($i%2==0){
echo '这是能够被2整除的数:'.$i.'<br/>';
}
}
Малый случай обучения выглядит следующим образом - код таблицы умножения:
<?php
/* 1*1=1;
* 1*2=2 2*2=4
* */
for($i=1;$i<=9;$i++){
for($j=1;$j<=$i;$j++){
echo $j.'*'.$i.'='.($i*$j)."\t";
}
echo '<br/>';
}
специальный технологический контроль
Специальный контроль потока - пример:
<?php
//break跳出整个for循环
for($i=1;$i<10;$i++){
if($i==3){
break;
}
echo '这里是$i的值:'.$i.'<br/>';
}
echo '<hr/>';
//continue跳出当前循环
for($i=1;$i<10;$i++){
if($i==3){
continue;
}
echo '这里是$i的值:'.$i.'<br/>';
}
echo '<hr/>';
echo '这里是开始部分';
goto jump;
echo '这里是jump下面的代码';
jump:
echo '这里是jump里面的代码';
echo '<hr/>';
echo '这里是结束部分';
php-массив
Что такое массив PHP? Что такое массив? - массив: набор данных, вphp
Массив на самом деле является упорядоченной картой.
пройти черезarray()
Декларация формы:
-
array()
пустой массив -
array(值1,值2...)
Нижний непрерывный массив индексов, нижний индекс массива начинается с 0 -
array(key=>value,key=>value...)
Индексированные массивы и ассоциации могут быть объявлены
пройти через:print_r
печатать массив
Массив или смешанный массив:
- Ключи массива могут быть целыми числами или строками
- Если имя ключа не является целым числом или строкой, будет выполнено следующее приведение
- Строки, содержащие действительные целочисленные значения преобразуются в целые числа
- Преобразование числа с плавающей запятой в целое число
- логический
true
преобразовать в 1,false
преобразовать в 0 -
null
Преобразовать в пустую строку - Массивы и объекты нельзя использовать в качестве ключей
Создавайте массивы динамически и быстро
Динамически создать массив:
-
$
имя массива[]
: индексированный массив с последовательными индексами -
$
имя массива[数字]
: указать индекс массива -
$
имя массива[字符串]
: связанный массив
Быстро создать массив - пример формата:
range($min, $max[$step=1]); 快速创建索引数组
compact($varname,...);快速创建关联数组
Изучаем небольшие примеры:
<?php
// $arr = array();
// var_dump($arr);
//索引数组 下标是从数字开始的
$arr = array(
1,
5.5,
false,
'dada'
);
print_r($arr);
echo '<hr/>';
//array(key=>value,key=>value...)
$arr1 = array(
5=>'dada',
6=>12,
9=>false,
4=>4.4
);
print_r($arr1);
echo '<hr/>';
//关联数组,下标是字符串
//username 可以称呼为我们的键名,
//我们的键名所对应的值就是键值
$arr2 = array(
'username'=>'dada',
'password'=>123456,
'age'=>27
);
print_r($arr2);
echo '<hr/>';
//索引+关联混合使用
$arr3 = array(
1,2,3,4,5,
'username'=>'dadaqianduan',
'addr'=>'haha'
);
print_r($arr3);
echo '<hr/>';
$arr3['username'] = 'dada';
print_r($arr3);
Обход массива через функцию указателя массива
-
current($arr)
, получить значение ключа элемента, в котором находится текущий указатель массива -
key($arr)
, получить имя ключа элемента, в котором находится текущий указатель массива -
next($arr)
, Переместите указатель массива вниз и получите ключевое значение элемента местоположения указателя массива -
prev($arr)
, переместите указатель массива на один бит вверх и верните значение ключа элемента в текущей позиции указателя -
end($arr)
, перемещает указатель массива в конец массива и возвращает значение ключа текущего элемента -
reset($arr)
, переместить указатель массива в начало массива и вернуть значение ключа текущего элемента
Итерация по массиву с foreach
foreach(数组名称 as $key=>$val){}
Итерация по массиву со списком и каждым
-
list($var[,$var...])
: присвоить значение в массиве некоторой переменной -
each($arr)
Возвращает массив текущих пар ключ/значение и движение вперед указателя на массив
Страница со списком пользователей
Как создать страницу со списком пользователей, пример формата кода выглядит следующим образом:
<tr style="text-align:center;">
</tr>
<?php foreach($userInfo as $val){
?>
<tr style="text-align:center;">
<td><?php echo $val['id'];?></td>
<td><img src="img/<?php echo $val['id'];?>" alt=""/></td>
</tr>
<?php
}?>
добавить страницу сообщения
Как добавить страницу сообщения, пример формата кода выглядит следующим образом:
<body>
<h2>添加留言页面</h2>
<form action="doAction.php?act=add" method="get">
<table border="1" width="80%" cellpadding="0" cellspacing="0" bgcolor="blue">
<tr>
<td>留言者</td>
<td><input type="text" name="username" id="" placholder="请输入您的呢称"/></td>
</tr>
</table>
</form>
</body>
Отправить на размышление-doAction.php
<?php
$username = $_GET['username'];
$title = $_GET['title'];
$content = $_GET['content'];
$arr[] = array(
'username' => $username,
'title' => $title,
'content' => $content
);
print_r($arr);
Соберите информацию о сообщении:
$filename = 'text.txt';
$data = 1;
file_put_contents($filename, $data);
<input type="hidden" name="act" value="add"/>
?php
$username = isset($_GET['username']) ? $_GET['username'] : '';
$time = date('Y-m-d h:i:s');
$act = isset($_GET['act']) ? $_GET['act']:''; // 是否是添加页面
// 判断
if(file_exists($filename) && filesize($filename)>0){
$str = file_get_contents($filename);
$arr = unserialize($str);
}
if($act == 'add'){
...
$arr = serialize($arr);
file_put_contents($filename, $arr);
}
if($act == 'add') {
$arr[] = array(
'username' => $username,
'title' => $title,
'content' => $content,
'time' => $time
);
$arr = serialize($arr);
if(file_put_contents($filename, $arr)){
echo'添加留言成功';
}else{
echo '添加留言失败';
};
}
PHP-функция
Резюме 9:00 Обычно используемые функции, давайте посмотрим на то, что у них есть значение и эффект:
-
strlen($string)
получить длину строки - Найти строку:
-
strpos($string,$search[,$offset])
: Найти первое вхождение целевой строки в указанной строке. -
stripos($string,$search[,$offset])
: игнорировать регистр, чтобы найти -
strrpos($string,$search[,$offset])
: Найти последнее вхождение целевой строки в указанной строке. -
strripos($string,$search[,$offset])
: Игнорировать регистр, чтобы найти место последнего вхождения. -
strstr|strchr($string,$search[,$before_needle])
: находит первое возникновение строки, возвращает строку -
strrchr($string,$search)
: найти последнее вхождение указанного символа в строку -
stristr($string,$search[,$before_needle])
: игнорировать регистр, чтобы найти -
str_replace($search,$replace,$string)
: Найдите другую строку в указанной строке и замените ее указанной строкой после ее нахождения. -
str_ireplace($search,$replace,$string)
: игнорирование регистра для поиска и замены
- струнный регистр
-
strtolower($string)
: возвращает строку после нижнего регистра -
strtoupper($string)
: После череды возвратов капитала -
ucwords($string)
: Сделать первую букву слова заглавной. -
ucfirst($string)
: Сделать заглавной первую букву слова в строке. -
lcfirst($string)
: строчная первая буква слова в строке
- символ ASCII
-
ord($char)
: получить ASCII указанного символа -
chr($ascii)
: Получить указанный символ в соответствии с ASCII
- Строка занята
-
substr($string,$start[,$length])
: Строка перехвата -
substr_replace($string,$replace,$start[,$length]):
заменить подстроку строки
- шифрование
-
md5($string)
: вычислить хеш-значение md5 строки, вернуть32
строка битовой длины -
sha1($string)
: вычислить хеш-значение sha1 строки, вернуть40
строка битовой длины
- фильтр:
-
trim($string[,$charlist])
: по умолчанию фильтруются пробелы на обоих концах строки, и указанная строка также может быть отфильтрована. -
ltrim($string[,$charlist])
: отфильтровать левый конец строки -
rtrim | chop($string[,$charlist])
: отфильтровать правый конец строки -
strip_tags($string[,$allowTag])
: фильтровать html-теги в строке -
addslashes($string)
: Используйте обратную косую черту, чтобы заключать в кавычки специальные символы в строках. -
htmlentities($string[,$flag=ENT_COMPAT])
: преобразование всех символов в объекты HTML. -
htmlspecialchars($string[,$flag=ENT_COMPAT]
: преобразование специальных символов в строке в объекты HTML. -
nl2br($string)
: вставить строку\n
использовать<br/>
заменять
- разделить/объединить
-
explode($delimiter,$string)
Разбивает указанную строку на массив -
implode | join($delimiter,$array)
Объединяет значения ключей в массиве в строку с указанным разделителем -
str_split($string[,$split_length=1])
Строка в массив
- Общие функции
-
strrev($string)
перевернуть строку -
str_shuffle($string)
Перемешать строку случайным образом -
str_repeat($string)
повторить строку -
str_getcsv(...)
Разобрать строку csv в массив -
parse_str($str[,$arr])
Разобрать строку на несколько переменных
Далее показано в виде таблицы.
Таблица библиотеки математических функций выглядит следующим образом:
функция | инструкция |
---|---|
abs($number) |
найти абсолютное значение |
ceil($number) |
округлен |
floor($number) |
Отбросить дробную часть |
round($number,$percision) |
округление |
pow($base,$exp) |
возведение в степень |
sqrt($number) |
квадратный корень |
max($val1,$val2,..) |
найти максимальное значение |
min($val1,$val2...) |
найти минимальное значение |
mt_rand($min,$max) |
генерировать случайные числа |
Таблица библиотеки функций даты и времени выглядит следующим образом:
функция | инструкция |
---|---|
date_default_timezone_get() |
получить часовой пояс по умолчанию |
date_default_timezone_set($timezone) |
установить часовой пояс по умолчанию |
date($format[,$time]) |
получить дату и время сервера |
time() |
получить текущую метку времени |
mktime() |
Получить метку времени unix даты |
getdate($timestamp) |
Получить информацию о дате и времени |
gettimeofday($return_float) |
Текущее время |
microtime([$get_as_float]) |
Возвращает текущую временную метку unix и микросекунды |
strtotime($time[,$now=time()]) |
Разбирает описание даты и времени любого английского текста какunix отметка времени |
Создание операций с массивами
функция | описывать |
---|---|
range($min, $max[,$step=1]) |
Быстро создавайте индексированные массивы с последовательными индексами |
compact($varname,$varname...) |
Быстро создавать ассоциативные массивы |
array_fill($start_index,$num,$value) |
Заполнить массив заданным значением |
array_fill_keys($keys,$value) |
Заполняет массив указанными ключами и значениями |
array_combine($keys,$values) |
Создайте массив с одним значением массива в качестве имени ключа и другим значением в качестве значения ключа. |
Таблица операций, связанных со значением ключа, выглядит следующим образом:
функция | описывать |
---|---|
count() |
Рассчитайте количество единиц в массиве или количестве атрибутов в объекте |
array_keys($array) |
Получите ключевое имя массива и верните его как индексированный массив с последовательными индексами |
array_values($array) |
Получите ключевое значение массива и верните его в виде индексированного массива с последовательными нижними индексами. |
array_filp($array) |
Поменять местами имена клавиш и назначения в массивах |
in_array() |
Проверить, существует ли значение в массиве |
array_search() |
Ищет в массиве заданное значение и возвращает соответствующее имя ключа в случае успеха |
arry_key_exists() |
Проверьте, существует ли данное имя ключа или индекс в массиве |
array_reverse() |
инверсия массива |
shuffle() |
Перемешать элементы массива |
array_rand() |
Случайным образом извлеките ключевое имя массива |
array_unique() |
удалить повторяющиеся значения из массива |
array_sum() |
Подсчитайте сумму значений элементов в массиве |
Таблица функций указателя массива выглядит следующим образом:
функция | описывать |
---|---|
key($array) |
Получить ключевое имя элемента в текущей позиции указателя |
current($array) pos($array)
|
Получить ключевое значение элемента в текущей позиции указателя |
next($array) |
Переместите указатель массива вниз на одну позицию и верните значение ключа элемента в текущей позиции указателя. |
prev($array) |
Переместите указатель массива вверх на одну позицию и верните значение ключа элемента в текущей позиции указателя. |
end($array) |
Переместите указатель массива в конец массива и верните значение ключа элемента в текущей позиции указателя. |
reset($array) |
Переместите указатель массива в начало массива и верните ключевое значение элемента положения, в котором находится текущий указатель. |
each($array) |
Возвращает текущую пару ключ-значение в массиве и перемещает указатель массива на одну позицию вниз |
list($var,...) |
Присвоить значение элемента массива соответствующей переменной |
array_unshift($array,$value...) |
Вставить элемент или элементы в начало массива |
array_shift($array) |
Вытолкнуть первый элемент массива |
array_push($array,$value...) |
Нажмите элемент или элементы в конце массива |
array_pop($array) |
Вытолкнуть последний элемент массива |
Таблица разделения и слияния массива выглядит следующим образом:
функция | описывать |
---|---|
array_slice($array,$offset) |
массив перехвата |
array_merge() |
Объединить массивы |
Использование пользовательских функций
Как объявить функцию? Давайте посмотрим на следующий код:
function 函数名称([参数...]){
函数体;
return 返回值;
}
Меры предосторожности:
- Имя функции не должно содержать специальных символов, начинаться с буквы или подчеркивания, за которым следует цифра, буква и подчеркивание.
- Имена функций предпочтительно должны иметь ясное значение и начинаться с глагола.
- Имена функций должны предпочтительно следовать за верблюжьим регистром или символом подчеркивания.
- Имена функций не поддерживают повторяющиеся имена
- Имена функций не чувствительны к регистру, но лучше всего следовать регистру при вызове.
- параметры функции не требуются
- Функция возвращает Null по умолчанию, и возвращаемое значение также может быть добавлено с помощью return
Далее, давайте посмотрим на введенные параметры функции:
Параметры делятся на формальные параметры и фактические параметры:
Формальные параметры, параметры, объявленные при определении функции (обязательные параметры: при вызове функции параметры должны быть переданы; необязательные параметры: если при вызове функции параметры не передаются, используется значение по умолчанию;)
Аргументы, фактические параметры, передаваемые при вызове функции
Затем разберитесь с областью действия переменных, как показано на следующей карте ума:
Далее поговорим о разнице между передачей по значению и передачей по ссылке:
- Изменения переменных, передаваемых функцией по значению, в теле функции не влияют на саму переменную.
- Передача по ссылке изменений переменной в теле функции влияет на саму переменную
Перезвони
Что такое функция обратного вызова?
В процессе разработки иногда требуется выполнить несколько несвязанных операций над объектом или значением, поэтому лучшим способом будет использование обратных вызовов.
<?php
function text1(){
echo '我是达达';
}
function text2($username){
echo '我是哪吒';
}
// 回调函数:函数体内的名称是我们要传入的参数();
function callBack($call,$str){
$call($str);
}
// 回调函数的使用就是传入的参数是你想要回调的函数名称
callBack('text2','dadaqianduan');
рекурсивная функция
Что такое рекурсивная функция, то есть тело функции вызывает само себя
Пример написания:
function text($i) {
echo $i;
$i--;
if($i>=0){
text($i);
}
}
text(2);
анонимная функция
Пример анонимной функции:
$str = function() {
echo 'dadaqianduan';
};
$str();
$str1 = function($username) {
echo 'dada';
echo $username;
};
$str1('哪吒');
php включаемый файл
php файл содержит:include
,include_once
,require
,require_once
, заключается в том, чтобы включить содержимое одного файла в другой файл.
-
require
Когда в справочном файле есть ошибка, это ошибка и предупреждение -
include
Два предупреждения при ссылке на файл - Обработка ошибок:
require
выдаст фатальную ошибку и остановит скрипт - Обработка ошибок:
include
выдаст только предупреждение, и скрипт продолжит работу
Поэтому здесь рекомендуется использоватьinclude
Ой!
include
илиrequire
оператор получит весь текст, код, разметку, которые существуют в указанном файле, и скопирует их с помощьюinclude
файл выписки.
Формат синтаксиса следующий:
include 'filename';
或
require 'filename';
php включает пример:
Давайте создадим стандартный файл нижнего колонтитула с именем «dada.php» со следующим кодом:
<?php
echo '<p> 达达 哪吒</p>';
?>
Затем вам нужно сослаться на этот файл нижнего колонтитула на другой странице следующим образом:
<html>
<body>
<p>魔王哪吒</p>
<?php include 'footer.php'; ?>
</body>
</html>
require_once/include_once
,иrequire/include
Функция та же самая, разница в том, что целевой контент будет проверен первым, если он был импортирован ранее.Если он был импортирован, тот же контент не будет импортирован снова.
объектно-ориентированный
Прежде всего, что такое объектно-ориентированный?
Это идея, способ разработки, а не фактический код.
Когда речь заходит об объектно-ориентированном, необходимо говорить о разнице между объектно-ориентированным и процессно-ориентированным:
- На самом деле ориентированность на процесс делает акцент на функциональном поведении (как сделать что-то одно).
- Объектно-ориентированный — это инкапсулировать функции в объекты, подчеркивая объекты функциями (кто что-то одно сделает)
- Объектно-ориентированные функции: наследование, инкапсуляция, полиморфизм
Несколько путей:
OOA(Object Oriented Analysis)面向对象分析
OOD(Object Oriented Design)面向对象设计
OOP(Object Oriented Programming)面向对象编程
классы и объекты
Когда дело доходит до объектной ориентации, отношения между классами и объектами неразрывны: класс — это абстракция конкретной транзакции, а объект — это конкретный экземпляр этого класса.
Как определить класс, определение класса: (аналогично ключевому слову класса для определения)
class Person{
}
<?php
// 定义一个人类
class Person{
// 类里面是有属性和方法存在的
// public 访问修饰符
public $userName = 'dada';
public $age = 12;
}
// 通过new 关键字来创建我们的对象
$p = new Person();
echo $p->userName.'<hr/>';
echo $p->age.'<hr/>';
Поговорим о свойствах, поговорим о методах, следующий пример:
<?php
class Person{
public $userName;
public $age;
// 类里面的行为称为方法
public function eat() {
echo '我要吃饭';
}
}
$p = new Person();
$p->eat();
Объекты размещаются в памяти
Давайте поговорим о анализе памяти объектов. В PHP память разделена на четыре:
- Группа данных: Используется для хранения программы, инициализирована до 0, а не в качестве глобальных переменных: статические переменные и константы
- Сегмент кода: хранить функции, методы
- Сегмент пространства стека: хранить небольшие данные
- Сегмент пространства кучи: хранит объекты и ссылки с большими объемами данных.
модификатор доступа php
Какие есть модификаторы доступа? Показано ниже:
-
public
публичный, по умолчанию -
protected
быть защищенным -
private
частный
Пример кода выглядит следующим образом
<?php
class Da{
public $userName = 'dada';
protected $age = 12;
public function eat() {
echo '我要吃饭';
}
}
$da = new Da();
echo $da->userName
echo $da->age // 报错
изменить, как показано ниже:
<?php
class Da{
public $userName = 'dada';
protected $age = 12;
public function eat() {
echo '我要吃饭';
//$this
echo $this->age;
}
}
$da = new Da();
echo $da->userName
echo $da->eat()
Конструктор и деструктор
Прежде всего, что такое конструктор? Конструктор черезnew
объект будет называться.
Во-вторых, что такое деструктор? Деструктор не может принимать параметры в первую очередь, деструктор будет вызван до того, как все ссылки на объект будут удалены или кажущееся исчезновение.
<?php
class Person {
public $userName;
public $age;
// php5.5之前的写法
// public function Person() {
// echo '我是构造函数';
// }
// 通过一个魔术常量来写构造函数
public function _construct($userName,$age) {
// $this表示的是当前对象
$this->userName = $userName;
$this->age = $age;
}
// 析构函数
public function _destruct(){
echo '析构函数'
}
}
$p1 = new Person('dada',12);
echo $p1->userName
$p1 = null; // 析构函数被调用
установить и получить магические методы
учитьсяset和get
метод:set
Предоставляет методы для установки свойств элемента для внешнего мира, в то время какget
Предоставляет доступ к свойствам члена внешнему миру.
Итак, магическая константа:_set
и_get
.
Следующий пример:
<?php
class Person{
private $userName;
private $age;
public function setAge($age){
// $this->age = 12;
// $this-age == private $age;
$this->age = $age;
}
public function getAge(){
return $this->age;
}
public function _set($key,$value){
$this->userName = $value;
}
public function _get($key){
return $this->userName;
}
$p = new Person();
// echo $p->userName;
$p->setAge(16);
echo $p->getAge();
магические методы isset и unset
-
_isset
при внешнем вызовеisset()
Функция вызывается автоматически при обнаружении недоступного свойства или свойства, которое не существует. -
_unset
при вызове вне классаunset
Вызывается автоматически при уничтожении недоступного свойства.
В следующем примере показано:
<?php
class Person{
private $userName;
private $age;
public $abc;
public function _construct($userName,$age){
$this->userName=$userName;
$this->age=$age;
}
public function _isset($name){
echo '当外部调用isset()函数检测不可访问的属性或者不存在的属性时自动调用';
return isset($name); // boolean
}
public function _unset($name){
echo '当在类外部调用unset销毁不可访问属性时调用';
}
}
$p = new Person('dada',12);
var_dump(isset($p->userName));
// echo '<hr/>'
unset($p->abc);
наследовать
Давайте поговорим о характеристиках объектно-ориентированного наследования, инкапсуляции и полиморфизма:
Так в чем же смысл наследования?Использование наследования может уменьшить дублирование кода,extends
ключевое слово для наследования.
Пример кода выглядит следующим образом:
<?php
class Person{
public $userName;
public $age;
public function eat(){
echo 'dadaqianduan';
}
}
class Student extends Person{
}
$stu = new Student();
echo $stu->eat();
использоватьparent
ключевые слова
используется в наследствоparent
, код показан ниже:
<?php
class Person {
public $userName='parent';
public $age = 100;
protected function eat() {
echo `老爸要吃饭`;
}
}
class Student extends Person {
public $userName = 'children`;
public $age = 12;
// 重写 需要访问的修饰符必须和父类的平级或者大于父类,方法名字相同
public function eat() {
parent::eat().'<hr/>';
echo 'children';
}
}
$stu = new Student();
echo $stu->eat();
Используйте последнее ключевое слово
Примечания по использованию ключевого слова final:
-
final
Ключевые слова не могут изменять свойства - одеяло
final
модифицированныйclass
и методы не могут быть унаследованы или переопределены
Используйте статическое ключевое слово
static
Используется для обозначения статического:
- одеяло
static
Измененные свойства и методы являются статическими свойствами и методами. - Статические свойства и методы характеризуются отсутствием вызова свойств и методов через объекты.
- Свойства и методы можно вызывать по имени класса
Следующий пример кода выглядит следующим образом:
class Person {
public static $i = 1;
public static function eat(){
echo '要吃饭';
}
}
echo Person::$i;
Person::eat();
self
пройти внутрь классаself
для доступа к статическим свойствам и методам:
Следующий пример кода выглядит следующим образом:
class Student {
public static $i = 1;
public static function eat(){
echo self::$i;
}
}
Student::eat();
Следующий пример статической привязки используется следующим образом:
<?php
class A{
public static function text1(){
echo 'text1';
}
public static function text2(){
echo 'text2';
self::text1();
}
}
class B extends A {
public static function text1(){
echo 'B-A';
}
}
B::text2();
Используйте ключевое слово const
const, является константным модификатором, характеристики констант, не могут быть изменены, уникальные идентификаторы, обратите внимание на следующее: константы должны быть написаны с заглавной буквы, не могут быть доступны через объекты и не нуждаются в добавлении$
символ.
система управления студентами
Пример подключения к базе данных:
<?php
header("content-type:text/html;charset=urf-8");
// 建立连接并且返回连接对象
$link = mysqli_connect('localhost','root','root') or die('连接失败');
// 设置字符集
mysqli_set_charset($link,'utf8');
// 打开指定数据库
mysqli_select_db($link, 'dadaqianduan');
// 执行sql语句
$query = "insert user values(1,'dada','12345')“;
$res = mysqli_query($link, $query);
if($res){
echo '插入数据成功';
}else{
echo '插入数据失败';
}
такmysqli
Шаги для работы с базой данных:
- соединять
mysql
- установить набор символов
- Откройте указанную базу данных
- воплощать в жизнь
sql
Запрос - бесплатный набор результатов
- закрыть соединение
Если нам нужно переписывать базу данных подключения каждый раз, когда мы ее используем, мы можем ее инкапсулировать:
Обернутый массив:config.php
<?php
$config = array(
'host'=>'localhost',
'user'=>'root',
'password'=>'root',
'charset'=>'utf8',
'dbName'=>'dadaqianduan'
);
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PWD','root');
define('DB_CHARSET','utf8');
define('DB_DBNAME','dadaqianduan');
соединять
<?php
/**
* 连接
* @param string $host
* @param string $user
* @param string $password
* @param string $charset
* @param string $database
* @return object 连接标识符
*/
function connect1($host,$user,$password,$charset,$database){
$link = mysqli_connect($host,$user,$password) or die('数据库连接失败');
mysqli_set_charset($link,$charset);
mysqli_select_db($link,$database) or die('指定数据库打开失败');
return $link;
}
Соединение требует передачи массива
/**
* 连接 需要传递数组
* @param array $config
* @return object
*/
function connect2($config){
$link=mysqli_connect($config['host'],$config['user'],$config['password']);
mysqli_set_charset($link,$config['charset']);
mysqli_select_db($link,$config['dbName'] or die('指定数据库打开失败');
return $link;
}
Установить связь в виде константы
/**
* 用常量的形式建立连接
* @return unknown
*/
function connect3(){
$link = mysqli_connect(DB_HOST,DB_USER,DB_PWD) or die('数据库连接失败');
mysqli_set_charset($link,DB_CHARSET);
mysqli_select_db($link,DB_DBNAME) or die('指定数据库打开失败');
return $link;
}
операция вставки
/*
array(
'username'=>'dada',
'password'=>'dada',
'age'=>'123456',
'regTime'=>'12345'
);
INSERT user(username,password,age,regTime) VALUES('dada','dada','12','123123123');
*/
/**
* 插入操作
* @param object $link
* @param array $data
* @param string $table
* @return boolean
*/
// 插入的封装
function insert($link,$data,$table){
$keys=join(',',array_key($data));
$vals = "'".join("','", array_values($data))."'";
$query = "insert{$table}({$keys})values({$vals})";
$res = mysqli_query($link,$query);
if($res){
return mysqli_insert_id($link);
}else{
return false;
}
}
операция обновления
/*
array(
'username'=>'dada',
'password'=>'dada',
'age'=>'12',
'regTime'=>'123123123'
);
UPDATE user SET username='dada',password='dada',age='12',regTime='123123123' WHERE id=1
*/
/**
* 更新操作
* @param object $link
* @param array $data
* @param string $table
* @param string $where
* @return boolean
*/
function update($link, $data, $table, $where = null) {
foreach ( $data as $key => $val ) {
$set .= "{$key}='{$val}',";
}
$set = trim ( $set, ',' );
$where = $where == null ? '' : ' WHERE ' . $where;
$query = "UPDATE {$table} SET {$set} {$where}";
$res = mysqli_query ( $link, $query );
if ($res) {
return mysqli_affected_rows ( $link );
} else {
return false;
}
}
удалить операцию
//DELETE FROM user WHERE id=
/**
* 删除操作
* @param object $link
* @param string $table
* @param string $where
* @return boolean
*/
function delete($link, $table, $where = null) {
$where = $where ? ' WHERE ' . $where : '';
$query = "DELETE FROM {$table} {$where}";
$res = mysqli_query ( $link, $query );
if ($res) {
return mysqli_affected_rows ( $link );
} else {
return false;
}
}
запросить все записи
/**
* 查询所有记录
* @param object $link
* @param string $query
* @param string $result_type
* @return array|boolean
*/
function fetchAll($link, $query, $result_type = MYSQLI_ASSOC) {
$result = mysqli_query ( $link, $query );
if ($result && mysqli_num_rows ( $result ) > 0) {
while ( $row = mysqli_fetch_array ( $result, $result_type ) ) {
$rows [] = $row;
}
return $rows;
} else {
return false;
}
}
получить количество записей в таблице
/**
* 得到表中的记录数
* @param object $link
* @param string $table
* @return number|boolean
*/
function getTotalRows($link, $table) {
$query = "SELECT COUNT(*) AS totalRows FROM {$table}";
$result = mysqli_query ( $link, $query );
if ($result && mysqli_num_rows ( $result ) == 1) {
$row = mysqli_fetch_assoc ( $result );
return $row ['totalRows'];
} else {
return false;
}
}
Получить количество записей в результирующем наборе
/**
* 得到结果集的记录条数
* @param object $link
* @param string $query
* @return boolean
*/
function getResultRows($link, $query) {
$result = mysqli_query ( $link, $query );
if ($result) {
return mysqli_num_rows ( $result );
} else {
return false;
}
}
Инкапсуляция для получения информации:
/**
* @param object $link
*/
function getServerInfo($link) {
return mysqli_get_server_info ( $link );
}
/**
* @param object $link
*/
function getClientInfo($link) {
return mysqli_get_client_info ( $link );
}
/**
* @param object $link
*/
function getHostInfo($link){
return mysqli_get_host_info($link);
}
/**
* @param object $link
*/
function getProtoInfo($link) {
return mysqli_get_proto_info ( $link );
}
Первое знакомство с Redis
Ниже показано введение, а ментальная карта выглядит следующим образом:
Redis является открытым исходным кодом (BSD
License), система хранения структуры данных в оперативной памяти, которую можно использовать в качестве базы данных, кэша и промежуточного программного обеспечения для обмена сообщениями. Он поддерживает множество типов структур данных, таких как строки (strings
), хэш (hashes
), список (list
), собирать(sets
), упорядоченный набор (sorted sets
) с запросами диапазона,bitmaps
,hyperloglogs
и геопространственный (geospatial
) Запрос радиуса индекса.Redis
встроенная копия (replication
), LUA-скрипты (Lua scripting
), события привода LRU (LRU eviction
), транзакция (transactions
) и различные уровни сохраняемости диска (persistence
) и через Redis Sentinel (Sentinel
) и автоматическое разбиение (Cluster
) обеспечивает высокую доступность (high availability
).
преимущество:
- Постоянная память, превосходная производительность чтения и записи, намного лучше, чем на жестком диске
IO
- Поддержка различных форматов данных, может удовлетворить различные потребности бизнеса
- Данные могут быть автоматически сохранены на жесткий диск, и служба может быть восстановлена при перезапуске службы, а служба стабильна и долговечна.
действоватьRedis
Установить
Window
установить под
ссылка для скачивания:https://github.com/tporadowski/redis/releases
.
Redis
Поддерживаются как 32-битные, так и 64-битные версии. Это необходимо выбрать в соответствии с реальной ситуацией на вашей системной платформе, здесь мы загружаемRedis-x64-xxx.zip
Сжать пакет на диск С, после распаковки переименовать папку вredis
.
Откройте папку со следующим содержимым:
открыть одинcmd
использование окнаcd
команда для переключения каталога наxxx:\redis
бегать:
redis-server.exe redis.windows.conf
начать другойcmd
Окно, не закрывайте исходное, иначе вы не сможете получить доступ к серверу.
Windows быстро настраивает переменные среды PHP+MySQL (phpStudy)
Установите, вступит ли в силу:
Composer
даPHP
используется для управления зависимостями (dependency
) инструмент отношений. Вы можете объявить внешние библиотеки инструментов, от которых вы зависите в своем проекте (libraries
),Composer
Поможет вам установить эти зависимые файлы библиотек.
https://getcomposer.org/
нажмитеGetting Started
нажмите, чтобы скачать:
https://developer.aliyun.com/composer?spm=a2c4e.11153940.0.0.40eb6995J6zupg
экзамен:
Windows
Быстрая настройкаNodeJS
Настройте командную строку источника зеркала Taobao:
npm config set registry http://registry.npm.taobao.org
Windows
Быстрая настройкаBower
существуетWindows
использовать подphpStudy
Установить
Используйте облачный сервер Tencent
fastadmin.net/go/tencent
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
скачать
https://www.bt.cn/?invite_code=MV9veWhubmU=
Нажмите, чтобы установить сейчасhttps://www.bt.cn/bbs/thread-19376-1-1.html
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
Разрешение доменного имени
Ошибка:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at admin@php.cn to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.
Исправлять.htaccess
для следующего
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
-
Node.js
(Необязательно, используется для установки Bower и LESS, а также необходимо использовать для упаковки и сжатия) -
Composer
(необязательно, для управления сторонними пакетами расширений) -
Bower
(необязательно, для управления внешними ресурсами) -
Less
(необязательно, используется для редактирования меньшего количества файлов, если вам нужно добавить или изменить стили css, лучше установить его)
Обратите внимание, не потеряйтесь
Ну все,выше все содержание этой статьи.Люди которые здесь видят таланты. Я буду продолжать обновлять статьи, связанные с технологиями, в будущем.Если вы считаете, что статья полезна для вас, пожалуйста, поставьте лайк и поделитесь, спасибо! !