-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlanguage_highlights.html
133 lines (122 loc) · 17.9 KB
/
language_highlights.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Welcome file</title>
<link rel="stylesheet" href="https://stackedit.io/style.css" />
</head>
<body class="stackedit">
<div class="stackedit__left">
<div class="stackedit__toc">
<ul>
<li><a href="#тілдік-нұсқаулар">Тілдік нұсқаулар</a>
<ul>
<li><a href="#программалау-парадигмалары">Программалау Парадигмалары</a></li>
<li><a href="#неймспейстерлер">Неймспейстерлер</a></li>
<li><a href="#стандартты-php-кітапханасы">Стандартты PHP Кітапханасы</a></li>
<li><a href="#команда-жолындағы-интерфейс">Команда Жолындағы Интерфейс</a></li>
<li><a href="#xdebug">Xdebug</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="stackedit__right">
<div class="stackedit__html">
<h1 id="тілдік-нұсқаулар">Тілдік нұсқаулар</h1>
<h2 id="программалау-парадигмалары">Программалау Парадигмалары</h2>
<p>PHP – бұл көпті бағдарламалау техниктерін қолдау қоса алатын жаттығу, динамикалық тіл. Ол жылдар бойы шынайы объектілік модельді PHP 5.0 (2004), анонимді функциялар мен неймспейстерлерді PHP 5.3 (2009), және PHP 5.4 (2012) жылдарында трейттерді қоса алады деп айтарымыз.</p>
<h3 id="объектілік-программалау">Объектілік Программалау</h3>
<p>PHP-дің класстерге, абстрактты класстерге, интерфейстерге, өткізу, конструкторларға, клондау, қателерге жаттығу қосумен толықтыруды қамтымайды жаттығу объектілік программалаудың толық ұсынымы бар.</p>
<ul>
<li><a href="https://www.php.net/language.oop5">Объектілік PHP туралы оқу</a></li>
<li><a href="https://www.php.net/language.oop5.traits">Трейттер туралы оқу</a></li>
</ul>
<h3 id="функционалды-программалау">Функционалды Программалау</h3>
<p>PHP функционалды программалауды қолдайды: функцияны өзгерту үшін бір атауға айналдыру мүмкіндігі бар. Пайдаланушы тарапынан құрылған және жасалған функциялар өзгертуге айналдырыла алады және динамик түрде шағымдалауға болады. Функциялар басқа функцияларға аргумент ретінде тасылып, функциялар басқа функцияларды қайта шағымдауға болады (бұл “Үлкен-тармақ функциялары” деп аталатын мүмкіндік). Функциялар басқа функцияларды қайта шағымдауға болады.</p>
<p>Рекурсия, функцияны өзінің өзіні шағымдауға мүмкіндік беретін бір мүмкіндік, тілді қолдайды, бірақ көбі PHP коды ітерацияға оралуда.</p>
<p>PHP 5.3 (2009) жылынан бастап бақылау функцияларымен (closure-деректермен) бірге жаңа анонимді функцияларды қосу мүмкін.</p>
<p>PHP 5.4 жылы бақылау функторларын нысандардың мәртебесіне байланыстыру мен callables-терілерді анонимді функциялармен алмасу мүмкіндігін жаңарту көрсеткіштерді қосты.</p>
<ul>
<li><a href="https://phptherightway.com/pages/Functional-Programming.html">PHP-да функционалды программалау туралы оқу</a></li>
<li><a href="https://www.php.net/functions.anonymous">Анонимді функциялар туралы оқу</a></li>
<li><a href="https://www.php.net/class.closure">Closure класы туралы оқу</a></li>
<li><a href="https://wiki.php.net/rfc/closures">Қосымша түсіндірулер Closures RFC тақырыбында</a></li>
<li><a href="https://www.php.net/language.types.callable">Callables туралы оқу</a></li>
<li><a href="https://www.php.net/function.call-user-func-array">Функцияларды динамик ретте шағымдауға болатын <code>call_user_func_array()</code> пайдалану туралы оқу</a></li>
</ul>
<h3 id="meta-programming">Meta Programming</h3>
<p>PHP supports various forms of meta-programming through mechanisms like the Reflection API and Magic Methods. There are many Magic Methods available like <code>__get()</code>, <code>__set()</code>, <code>__clone()</code>, <code>__toString()</code>, <code>__invoke()</code>, etc. that allow developers to hook into class behavior. Ruby developers often say that PHP is lacking <code>method_missing</code>, but it is available as <code>__call()</code> and <code>__callStatic()</code>.</p>
<ul>
<li><a href="https://www.php.net/language.oop5.magic">Read about Magic Methods</a></li>
<li><a href="https://www.php.net/intro.reflection">Read about Reflection</a></li>
<li><a href="https://www.php.net/language.oop5.overloading">Read about Overloading</a></li>
</ul>
<h2 id="неймспейстерлер">Неймспейстерлер</h2>
<p>Жоғарыда аталғаны тұлғалармен PHP әлемінде көптеген дайындар код жасаушылары бар. Бұл онымен, бір библиотеканың PHP коды басқа библиотеканың кодымен бірдей клас атауын пайдалануы мүмкін. Егер ешкімнің кодымен бірдей клас атауы болса, олар бірдей неймспейстерде пайдаланылса, олар қосылып, бір-бірімен бірігіп тұрып жататарды жасайды және мәселен туралып жататарды жасайды.</p>
<p><em>Неймспейстерлер</em> бұл мәселені шешеді. PHP сипаттама нұсқауларында айтылғандай, неймспейстерлер операциялық жүйе директорияларымен тура келіп, файлдарды “неймспейс” жасайды; екеуі бір атты файлдар айнымас шолу директорияларында бара алады. Солайша, екеуі бір атты PHP кластары да айнымас неймспейстерлерде бара алады. Бұл тездік.</p>
<p>Сіздің кодыңызды неймспейстерге салу маңызды, сондықтан ол басқа жасаушыларды айнымас библиотекалармен қосылмау жасамасынан қорқмауыз.</p>
<p>Неймспейстерлерді пайдалану үшін <a href="https://www.php-fig.org/psr/psr-4/">PSR-4</a> да белгіленген жолды пайдалануымыз маңызды. Бұл, плагиаттык кодты қолдану үшін стандартты файл, клас және неймспейс кеңістігін ұсыну мақсатын қою.</p>
<p>2014 жылдың қазан айында PHP-FIG бұл стандартты айтысты: <a href="https://www.php-fig.org/psr/psr-0/">PSR-0</a>. PSR-0 мен PSR-4 бірдей пайдаланылуы мүмкін. Соңғысы PHP 5.3 талап етеді, сондықтан көбі PHP 5.2 тек бұзылмайтын бағдарламалар PSR-0-ді өзгертуді ұмытады.</p>
<p>Жаңа қолданба немесе пакет үшін айтыстыру стандартты пайдалану қалайсыздарыңызды <a href="https://www.php-fig.org/psr/psr-4/">PSR-4-ге тырысыңыз</a>.</p>
<ul>
<li><a href="https://www.php.net/language.namespaces">Неймспейстерлер туралы оқу</a></li>
<li><a href="https://www.php-fig.org/psr/psr-0/">PSR-0 туралы оқу</a></li>
<li><a href="https://www.php-fig.org/psr/psr-4/">PSR-4 туралы оқу</a></li>
</ul>
<h2 id="стандартты-php-кітапханасы">Стандартты PHP Кітапханасы</h2>
<p>Стандартты PHP Кітапханасы (SPL) PHP-мен бірге жасалған және класстар мен интерфейстерді тарату береді. Ол аса тұрғында қажетті деректер структурасы (стек, кеу, тас, және т.б.) жаттығу класстарынан, оларды таратуға арналған итераторлардан жасалады, немесе SPL интерфейстерін реализациялауы келетін сіздің класстарыныздан.</p>
<ul>
<li><a href="https://www.php.net/book.spl">SPL туралы оқу</a></li>
<li><a href="https://www.linkedin.com/learning/learning-the-standard-php-library?trk=lynda_redirect_learning">LinkedIn.com-да SPL бойынша видео курс (төлеулі)</a></li>
</ul>
<h2 id="команда-жолындағы-интерфейс">Команда Жолындағы Интерфейс</h2>
<p>PHP веб-дайындарды жазу үшін жасалған, бірақ скрипттенген команда жолындағы интерфейс (CLI) бағдарламаларын жасауға арналғанда да пайдалы. Команда жолындағы PHP бағдарламалары тесттік, деплоймент, және бағдарлама әкімшілігі сияқты көптеген орта міндеттерді автоматтауға көмек көміді.</p>
<p>CLI PHP бағдарламалары сіздің бағдарлама кодыңызды тіркесіз, оны өзгерту мен қауіпсіздікке қажет болмайтын веб GUI (графикалық пайдалану интерфейсі) жасамаған кезде қолайлы. Тек ескеріңіз, <strong>тек өз CLI PHP скриптілеріңізді көрсетпейіз</strong> !</p>
<p>PHP-ді команда жолынан іске асыруды көріңіз:</p>
<pre class=" language-console"><code class="prism language-console">> php -i
</code></pre>
<p><code>-i</code> опциясы <a href="https://www.php.net/function.phpinfo"><code>phpinfo()</code></a> функциясымен сәйкес PHP конфигурациясын басып шығарады.</p>
<p><code>-a</code> опциясы интерактивті шеллді ұсынады, сияқты ruby-нің IRB немесе python-нің интерактивті шелліне ұпай қосады. Басқа пайдалы <a href="https://www.php.net/features.commandline.options">команда жолындағы опциялар</a> бар.</p>
<p>Өйткені, біздің “Сәлем, $name” CLI бағдарламамызды жасауға талап көрсетейік. Оны сынамау үшін төмендегі сипаттаманы алады “hello.php” атты файлды жасаңыз.</p>
<pre class=" language-php"><code class="prism language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">$argc</span> <span class="token operator">!==</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">echo</span> <span class="token string">"Қолдану: php hello.php <аты>"</span> <span class="token punctuation">.</span> <span class="token constant">PHP_EOL</span><span class="token punctuation">;</span>
<span class="token function">exit</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token variable">$name</span> <span class="token operator">=</span> <span class="token variable">$argv</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">echo</span> <span class="token string">"Сәлем, $name"</span> <span class="token punctuation">.</span> <span class="token constant">PHP_EOL</span><span class="token punctuation">;</span>
</span></code></pre>
<p>PHP сценарийінізді іске асыруда қолданылатын аргументтерге негізделген екі арнайы өріс жасайды. <a href="https://www.php.net/reserved.variables.argc"><code>$argc</code></a> - бұл аргументтердін <em>санын</em> қамтындауға арналған бүтін сан, <a href="https://www.php.net/reserved.variables.argv"><code>$argv</code></a> - бұтін аргументтердін <em>мәнінің</em> бірікмесі. Бірінші аргумент әрі көмекше сценарий файлының аты болады, міндетті түрде “hello.php” бұл мәнінде.</p>
<p><code>exit()</code> анықтамасы, команданың қатесін білдіру үшін ненеге баратын емес сан боларымыз. Жиі байланысатын шығару кодтар <a href="https://www.gsp.com/cgi-bin/man.cgi?section=3&topic=sysexits">мұндай жерде</a> табылмайды.</p>
<p>Біздің сценарийді, жоғарыда, команда жолынан іске асыруды толтыру үшін:</p>
<pre class=" language-console"><code class="prism language-console">> php hello.php
Қолдану: php hello.php <аты>
> php hello.php Әлем
Сәлем, Әлем
</code></pre>
<ul>
<li><a href="https://www.php.net/manual/en/features.commandline.php">PHP-ді команда жолынан іске асыру туралы оқу</a></li>
</ul>
<h2 id="xdebug">Xdebug</h2>
<p>Бағдарламалау жасаушылығында ең пайдалы құралдардан бірі дебаггер. Ол сізге кодыныздын орындалуын бақылау мен тізбегінің мазмұнын бақыламауға мүмкіндік береді. Xdebug, PHP дебаггері, Breakpoints және stack бақылау жасау үшін көптеген IDE-лерді пайдалана алады. Сондықтан PHPUnit және KCacheGrind кез-келген кодты байланыс анализі мен кодты профилизациялау үшін пайдалана алады.</p>
<p>Өзгеріске өзінізді қандай жаттығуға қалайысыздығыңызды байланысататын болса, <code>var_dump()</code>/<code>print_r()</code> қолдана бірмек, жауапты табу мүмкін емес - сіз дебаггерді пайдалануға мүмкіндік беретіндігін байқайсыздарыңыз.</p>
<p><a href="https://xdebug.org/docs/install">Xdebug орнату</a> мүмкін болады, бірақ оның ең маңызды мүмкіндіктерінің бірі “Қашықтықты дебаглау” - егер сіз кодты жергілікті дайындасында дайын тест ету қайта нысандасаңыз, “Қашықтықты дебаглау” бұл сізге көмек көрсететін мүмкіндік болады.</p>
<p>Салтанатта, сіз Apache VHost немесе .htaccess файлында бұл мәндерді өзгертуіз:</p>
<pre class=" language-ini"><code class="prism language-ini">php_value xdebug.remote_host 192.168.?.?
php_value xdebug.remote_port 9000
</code></pre>
<p>“remote host” және “remote port” сіздің локал компьютеріңізге және IDE-ңізді өздігінізге көруге орнатылатын портқа сәйкес келеді. Содан кейін IDE-ңізді “қосылуларды күту” режиміне қоятын және URL-ді жүктеу қажет:</p>
<pre><code>http://your-website.example.com/index.php?XDEBUG_SESSION_START=1
</code></pre>
<p>Сіздің IDE-ңіз қазір сценарий орындалатын уақыттағы ағымдылығын персоналдайтып, бейнелерді орнату мен жадыдагы мәндерді тексеру мүмкіндігін береді.</p>
<p>Графикалық дебаггерлар кодты бағыттайтын, айнымасын тексеру жасайтын және тиісті жұмыс уақытша кодты еңгізу мүмкіндігін береді. Көптеген IDE-лерде Xdebug-мен графикалық дебаглауға қосу жалпы немесе плагинді қолдану мүмкін. MacGDBp, macOS-үшін тегін, ашық кодты GUI-сы болатын стандартты Xdebug.</p>
<ul>
<li><a href="https://xdebug.org/docs/">Xdebug туралы толығырақ оқу</a></li>
<li><a href="https://www.bluestatic.org/software/macgdbp/">MacGDBp туралы толығырақ оқу</a></li>
</ul>
</div>
</div>
</body>
</html>