-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdependency_management.html
143 lines (127 loc) · 22 KB
/
dependency_management.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
134
135
136
137
138
139
140
141
142
143
<!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="#composer-және-packagist">Composer және Packagist</a></li>
<li><a href="#pear">PEAR</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="stackedit__right">
<div class="stackedit__html">
<h1 id="залымдылықтарды-басқару">Залымдылықтарды басқару</h1>
<p>PHP-де таңдау жасалған миллиондаған кітапханалар, фреймворктар және компоненттер бар. Сіздің жобауызды таңдау кезінде сіз көбінесе көптегенін пайдаланасыз — өйткені, олар жобауыздың бағдарлама қосымшалары. Соңғы уақытқа дейін PHP-де бұл жобауларды басқару үшін жоғары деңгейде өзгерістер жоқты. Оларды өзіңізді басқарсаңыз да, сізге автозагрузшыларды ешқашан талап етпейтінін де есептемену керек болады.</p>
<p>Қазіргі уақытта PHP үшін екі аса пакет басқару жүйесі бар — <a href="https://phptherightway.com/#composer_and_packagist">Composer</a> және <a href="https://phptherightway.com/#pear">PEAR</a>. Қазіршыда Composer PHP үшін ең көп пайдаланылатын пакет басқару жүйесі болып табылады, бірақ жаттама PEAR үшін есімі болды. PEAR тарихы мені білуді ұнайды, себебі сіз оны пайдаланбасаңыз да, онымен байланыс анықтамалар таба аласыз.</p>
<h2 id="composer-және-packagist">Composer және Packagist</h2>
<p>Composer PHP үшін ұсынылатын тиімділікті басқару құралы. Жобауыздың қосымшаларын <code>composer.json</code> файлында көрсетіп, бірнеше оқиғалы командалармен Composer автоматты түрде жобауыздың қосымшаларын жүктеу және автозагрузшыларды орнататындығын байланайды. Composer, нода.жс-тің NPM және Ruby өзендегі Bundler теңіздеріне тура тартылатындай.</p>
<p>Composer-мен сәйкес жұмыс істеу үшін өз жобауыздың қосымшаларын <code>composer.json</code> файлында тізіп көрсетуіңіз келеді, және қарай бірнеше оқиғалы командалармен Composer жобауыздың қосымшаларын автоматты түрде жүктейді және автозагрузшыларды орнататындығын байланайды. Composer, нода.жс-тің NPM және Ruby-дің Bundler теңіздеріне тура тартылатындай.</p>
<p>Composer-мен сәйкес қосымшалармен сәйкес көрсетілген көптеген PHP кітапханалары бар және оларды жобауызда пайдалану үшін дайында дайын. Бұл “пакеттер” <a href="https://packagist.org/">Packagist</a> тақтасында тізімделеді — бұл Composer-мен сәйкес жұмыс істейтін PHP кітапханаларының ресми қорындырмасы.</p>
<h3 id="composer-қалай-орнату">Composer қалай орнату</h3>
<p>Composerды жүктеу үшін ең үздік жол — <a href="https://getcomposer.org/download/">ресми нұсқауларды орындау</a> жолдарын көру. Бұл орнатушының бұзылмауын не персоналданғанын тексеретіндіруді береді. Орнатушы, сіздің <em>ағымдағы жұмыс директориясының ішіне</em> <code>composer.phar</code> бинарын орнатады.</p>
<p>Біз Composerды <em>жалпы орнату</em> (мысалы, <code>/usr/local/bin</code> орталығында біреу) жайлы көмек тапсырарымыз. Бұған арналған, келесі команданы орындаңыз:</p>
<pre class=" language-console"><code class="prism language-console">mv composer.phar /usr/local/bin/composer
</code></pre>
<p><strong>Ескерту:</strong> Если yдeлeниe иcпoлнить нeвoзмoжнo из-зa oгрaничeний пpaв, тoптық команданы <code>sudo</code> менен алып шығыңыз.</p>
<p>Локальді Composer орындалса, сіз <code>php composer.phar</code> пайдаланасыз, жалпы орнатқандырау бойынша тек <code>composer</code> болмайды.</p>
<h4 id="windows-тіркеу-жасау">Windows тіркеу жасау</h4>
<p>Windows пайдаланушылары үшін ең оңай жол — <a href="https://getcomposer.org/Composer-Setup.exe">ComposerSetup</a> орнатушысын пайдалану, онда барлық жерде <code>composer</code> деген атты шағып шақырып отырасыз. Бұл орнатушы өзгертушіден тазартып жаттығу туралы хабарлауы келеді мен сізге <code>$PATH</code> орнатар және сізге команда жолында барлық каталогтан <code>composer</code> деген атаумен шағып шақырып отырып отырып алу мүмкіндігін береді.</p>
<h3 id="қосымшаларды-анықтау-және-орнату-жолдары">Қосымшаларды анықтау және орнату жолдары</h3>
<p>Composer, жобауыздың қосымшаларын <code>composer.json</code> атауы файлында сақтау жасаушы. Сіз оны өзіңізді басқаруға болады, не болмаса Composer өзімен пайдалана аласыз. <code>composer require</code> команда жобауызға қосымша қосатынды жасау және егер сізде <code>composer.json</code> файл жоқ болса, ол жасалады. Жобауызға <a href="https://twig.symfony.com/">Twig</a> қосу үшін міндетті команданы көрсетеміз.</p>
<pre class=" language-console"><code class="prism language-console">composer require twig/twig:^2.0
</code></pre>
<p>Немесе <code>composer init</code> командасы жобауыз үшін толық <code>composer.json</code> файлын жасау үшін сізді рәсімдеуге рұқсат етеді. Сіз қанағаттан <code>composer.json</code> файлын жасадыңыздын кейін, Composer-ге сіздің қосымшаларыңызды <code>vendor/</code> көзінде жүктеу мен орнату үшін айтып болады. Бұл әрекет өзі жасалған <code>composer.json</code> файлын қамтамасыз еске алсаңыз, болмаса <code>composer.json</code> файлын бар боларға барлық жерге қосу үшін жаттырылатын жаттығу туралы көмек көрсетеді:</p>
<pre class=" language-console"><code class="prism language-console">composer install
</code></pre>
<p>Сонымен әрекеттерді сіздің өзіңіз жасаған <code>composer.json</code> файлының сізге көмек көрсетуі керек. PHP файлдың негізгі PHP файлына келісім көрсетіп отыру үшін бұл жолды қосыңыз; бұл PHP-ге сіздің жобауыздың қосымшалары үшін Composer автозагрузшысын пайдалануын айтар.</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">require</span> <span class="token string">'vendor/autoload.php'</span><span class="token punctuation">;</span>
</span></code></pre>
<p>Енді сіз өзіңіздің жобауыздың қосымшаларын пайдалана аласыз және олар сұрау бойынша автозагрузкаланады.</p>
<h3 id="қосымшаларыңызды-жаңарту">Қосымшаларыңызды жаңарту</h3>
<p>Composer, сіз <code>composer install</code> командасын орындадыңызда өзгерістерді жүктеу кезінде көмекші болады деп аталатын <code>composer.lock</code> атауын жасайды. Егер сіз жобауызды басқа басқа адамдармен бөлісесіз, онда олар <code>composer install</code> командасын орындағандарында сізге бірдей нұсқаларды көмекші болатынын көздегірлікке алады. Сіздің қосымшаларыңызды жаңарту үшін <code>composer update</code> командасын орындаңыз. Өзгерістерді орнату кезінде <code>composer update</code> командасын пайдаланбаңыз, тек <code>composer install</code> командасын пайдаланыңыз, сонымен соңырауға кетпейсіздер, себебі сіздің бағдарламауызда өзгерістерге ұшырау көрсеткен қосымшаларды тауарға орнатуымыз келіп кете алады.</p>
<p>Бұл көмекші болады, егер сіздің нұсқауларыңызды өзгерткеніңізде. Мысалы, <code>~1.8</code> нұсқасы " <code>1.8.0</code>-дан жаңа не <code>2.0.x-dev</code>-тен кем" деп айтылады. Сіз <code>1.8.*</code> деп аталғанда, алдында барлық жоспарланған шектерге сай қосымшаларды жаңарту үшін Composer-дің <code>composer update</code> командасын қолдануы мүмкін.</p>
<h3 id="жаңа-нұсқалар-туралы-хабарлама-алу">Жаңа нұсқалар туралы хабарлама алу</h3>
<p>Жаңа нұсқалар туралы хабарлама алу үшін <a href="https://libraries.io/">libraries.io</a> веб-сервисті тіркеліп, оның қосымшаларды көмекшіде аударым жасайтынінізге болады және жаңартулар туралы хабарламаларды алу үшін сізге хабарлама жасауын жоспарлайды.</p>
<h3 id="қосымшаларыңыздың-қауіпсіздік-мәселелерін-тексеру">Қосымшаларыңыздың қауіпсіздік мәселелерін тексеру</h3>
<p><a href="https://github.com/fabpot/local-php-security-checker">Local PHP Security Checker</a> — бұл сіздің <code>composer.lock</code> файлын тексеру жасайтын команда әзірлеу программасы, сізге сіздің қосымшаларыңызды жаңарту қажетпеуігі жайлы хабарлайды.</p>
<h3 id="composer-арқылы-жалпы-қосымшаларды-басқару">Composer арқылы жалпы қосымшаларды басқару</h3>
<p>Composer жалпы қосымшалар мен олардың бинарларымен де жұмыс істейді. Пайдалану өте оңай, тек <code>global</code> белгісімен команданы тағайындауыңыз көрсетілген болады. Мысалы, сіз PHPUnit орнату және оны жалпы болатын болмасаңыз, келесі команданы орындаңыз:</p>
<pre class=" language-console"><code class="prism language-console">composer global require phpunit/phpunit
</code></pre>
<p>Бұл сіздің жалпы қосымшаларыңызды орналастыру үшін <code>~/.composer</code> жатырмасын жасайды. Орнатылған пакеттердің бинарларын бар жерде пайдалану үшін сіз <code>~/.composer/vendor/bin</code> жолын <code>$PATH</code> өрісіне қосарыс айтып көресіз.</p>
<ul>
<li><a href="https://getcomposer.org/doc/00-intro.md">Composer туралы білу</a></li>
</ul>
<h2 id="pear">PEAR</h2>
<p>Кейбір PHP дамытуды бағдарлаушыларды қосымшаларды басқару үшін <a href="https://pear.php.net/">PEAR</a> пакет басқарушысын қолдайтын. Ол Composer-ге сияқты әзірленген, бірақ кейбір айырмашылықтары бар.</p>
<p>PEAR көмекшіні өзіне айналдыру үшін өкілді пішімі бар пакетпен қамтылуын талап етеді, бұл айқын болары алдында пакетті пайдалану үшін PEAR-мен байланысын жасауы керек. PEAR-мен жұмыс істеу үшін PEAR-мен байланыстарын пайдалану мүмкін емес.</p>
<p>PEAR пакеттерін жергілікті орната алады, бұл оларды бір рет орнатқаннан кейін олар сервердегі барлық жобалар үшін қолжетімді болады. Бұл бір пакетпен бірде бірдей нұсқаны пайдаланатын көптеген жобалар бар болса, бірақ егер екі жоба арасында нұсқалардың қатынаулары пайда болса, сонда мәселе туындай алатын болуы мүмкін.</p>
<h3 id="pear-орнату-үшін">PEAR орнату үшін</h3>
<p>PEAR-ты жүктеп алу және оны орындау үшін <code>.phar</code> орнатушыны жүктейсіз. PEAR дайында барлық жүйелер үшін егжей-егжейлі <a href="https://pear.php.net/manual/installation.getting.php">орнату нұсқаларын</a> талап ететін көмекшілер бар.</p>
<p>Егер сіз Linux пайдалана болсаңыз, сіздің дистрибутивтік пакет басқарушысында қарай ала аласыз. Мысалы, Debian мен Ubuntu, міне, apt пакетінің <code>php-pear</code> пакеті бар.</p>
<h3 id="пакетті-орнату-жолдары">Пакетті орнату жолдары</h3>
<p>Егер пакет <a href="https://pear.php.net/packages.php">PEAR пакеттер тізімінде</a> көрсетілген болса, онда оны қолданбаушы атауын көрсете отырып орнатуға болады:</p>
<pre class=" language-console"><code class="prism language-console">pear install foo
</code></pre>
<p>Егер пакет басқа топпен ұсталған болса, сізге алдын-ала оны ұстауын жасау қажет пайда болады және орнату кезінде оны көрсету қажет. Бұл тақырыптың толық ақпараты үшін <a href="https://pear.php.net/manual/guide.users.commandline.channels.php">Көмекшіден топ пайдалану дайындамасы</a> сілтемесіне көз жетіңіз.</p>
<ul>
<li><a href="https://pear.php.net/">PEAR туралы білу</a></li>
</ul>
<h3 id="composer-арқылы-pear-қосымшаларын-басқару">Composer арқылы PEAR қосымшаларын басқару</h3>
<p>Егер сіз <a href="https://phptherightway.com/#composer_and_packagist">Composer</a> қолдана алатын болсаңыз және кейбір PEAR кодты орнату қаттық болса, сіз Composer-ді PEAR қосымшаларын басқару үшін пайдалана аласыз. Composer нұсқасы 2-ге PEAR репозиториялары дайында қолданбаушы репозиторияларды дайындамайды, сондықтан PEAR пакеттерін орнату үшін репозиторияны өзіңіз қосу қажет:</p>
<pre class=" language-json"><code class="prism language-json"><span class="token punctuation">{</span>
<span class="token string">"repositories"</span><span class="token punctuation">:</span> <span class="token punctuation">[</span>
<span class="token punctuation">{</span>
<span class="token string">"type"</span><span class="token punctuation">:</span> <span class="token string">"package"</span><span class="token punctuation">,</span>
<span class="token string">"package"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
<span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"pear2/pear2-http-request"</span><span class="token punctuation">,</span>
<span class="token string">"version"</span><span class="token punctuation">:</span> <span class="token string">"2.5.1"</span><span class="token punctuation">,</span>
<span class="token string">"dist"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
<span class="token string">"url"</span><span class="token punctuation">:</span> <span class="token string">"https://github.com/pear2/HTTP_Request/archive/refs/heads/master.zip"</span><span class="token punctuation">,</span>
<span class="token string">"type"</span><span class="token punctuation">:</span> <span class="token string">"zip"</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token string">"require"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
<span class="token string">"pear2/pear2-http-request"</span><span class="token punctuation">:</span> <span class="token string">"*"</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token string">"autoload"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
<span class="token string">"psr-4"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span><span class="token string">"PEAR2\\HTTP\\"</span><span class="token punctuation">:</span> <span class="token string">"vendor/pear2/pear2-http-request/src/HTTP/"</span><span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<p>Алғандағы бөлім <code>"repositories"</code> , Composer-ге бұл репозиторияны инициализациялау (немесе PEAR терминологиясы бойынша “айналдыру” деп аталады) қажет болатындықты айту үшін қолданылады. Сондай-а <code>require</code> бөлімі пакет атын мысалдау:</p>
<blockquote>
<p>pear-channel/package</p>
</blockquote>
<p>“pear” префиксі айырмашылықтардан бұрын жаталатын болмасы үшін саналады, міне, мысалы, бір PEAR шаруашыны басқа пакеттердің поста аты боларымыз, онда шаруашының қысқа аты (немесе толық URL) пакетті қайда орнату көрсету үшін пайдаланылады.</p>
<p>Бұл код орнатылған кезде ол сіздің вендор директориясында қолжетімді болар және автоматты түрде Composer-дің автоматты орнатқышы арқылы қол жетімді:</p>
<blockquote>
<p>vendor/pear2/pear2-http-request/pear2/HTTP/Request.php</p>
</blockquote>
<p>Бұл PEAR пакетті пайдалану үшін оны мысалдау көрініз:</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">require</span> <span class="token constant">__DIR__</span> <span class="token punctuation">.</span> <span class="token string">'/vendor/autoload.php'</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">PEAR2<span class="token punctuation">\</span>HTTP<span class="token punctuation">\</span>Request</span><span class="token punctuation">;</span>
<span class="token variable">$request</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Request</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
<ul>
<li><a href="https://getcomposer.org/doc/05-repositories.md">Composer-мен репозиторияларды қолдану туралы білу</a></li>
</ul>
</div>
</div>
</body>
</html>