<!DOCTYPE html>
	<html lang="vi" xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns#">
	<head>
<title>Quản lí các thư viện PHP với Composer</title>
<meta name="description" content="Quản lí các thư viện PHP với Composer - Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;nukeviet.vn&#x002F;vi&#x002F;news&#x002F;savefile&#x002F;nhom-phat-trien&#x002F;Quan-li-cac-thu-vien-PHP-voi-Composer-382.html">
<meta name="author" content="NukeViet">
<meta name="copyright" content="NukeViet [admin@nukeviet.vn]">
<meta name="generator" content="NukeViet v4.6">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta property="og:title" content="Quản lí các thư viện PHP với Composer">
<meta property="og:type" content="website">
<meta property="og:description" content="Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;nukeviet.vn&#x002F;vi&#x002F;news&#x002F;savefile&#x002F;nhom-phat-trien&#x002F;Quan-li-cac-thu-vien-PHP-voi-Composer-382.html">
<meta property="og:site_name" content="NukeViet">
<meta property="og:url" content="https://nukeviet.vn/vi/news/savefile/nhom-phat-trien/Quan-li-cac-thu-vien-PHP-voi-Composer-382.html">
<link rel="shortcut icon" href="https://www.nukeviet.vn/favicon.ico">
<link rel="canonical" href="https://nukeviet.vn/vi/news/savefile/nhom-phat-trien/Quan-li-cac-thu-vien-PHP-voi-Composer-382.html">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/" title="Tin Tức" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/Tin-tuc/" title="Tin Tức - Tin tức NukeViet" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/thong-cao-bao-chi/" title="Tin Tức - Thông cáo báo chí" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/Tin-an-ninh/" title="Tin Tức - Bản tin an ninh" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/phat-hanh/" title="Tin Tức - Bản tin phát hành" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/nhom-phat-trien/" title="Tin Tức - Tin từ nhóm phát triển" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/community/" title="Tin Tức - Cộng đồng NukeViet" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/Tin-hoat-dong/" title="Tin Tức - Tin hoạt động" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/To-chuc-Su-kien/" title="Tin Tức - Tổ chức - Sự kiện" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/Guong-mat-tieu-bieu/" title="Tin Tức - Gương mặt tiêu biểu" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/hop-tac-phat-trien/" title="Tin Tức - Hợp tác - Phát triển" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/thong-bao-moi-thau/" title="Tin Tức - Thông báo mời thầu" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/viec-lam/" title="Tin Tức - Việc làm" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/Danh-sach-doi-tac/" title="Tin Tức - Danh sách đối tác" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/Thong-tin-da-chieu/" title="Tin Tức - Thông tin đa chiều" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/Bao-chi-viet/" title="Tin Tức - Báo chí viết" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/Website-tieu-bieu/" title="Tin Tức - Website tiêu biểu" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/the-gioi-cong-nghe/" title="Tin Tức - Thế giới công nghệ" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/website/" title="Tin Tức - Thế giới Web" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/An-ninh-mang/" title="Tin Tức - An ninh mạng" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/Cong-dong-nguon-mo/" title="Tin Tức - Cộng đồng nguồn mở" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/nukeviet-va-seo/" title="Tin Tức - NukeViet và SEO" type="application/rss+xml">
<link rel="alternate" href="https://www.nukeviet.vn/vi/news/rss/Huong-dan-su-dung/" title="Tin Tức - Hướng dẫn sử dụng" type="application/rss+xml">
<link rel="preload" as="style" href="https://www.nukeviet.vn/assets/css/font-awesome.min.css" type="text/css">
<link rel="preload" as="style" href="https://www.nukeviet.vn/themes/nukeviet4_vn/css/bootstrap.min.css" type="text/css">
<link rel="preload" as="style" href="https://www.nukeviet.vn/themes/nukeviet4_vn/css/style.css" type="text/css">
<link rel="preload" as="style" href="https://www.nukeviet.vn/themes/nukeviet4_vn/css/style.responsive.css" type="text/css">
<link rel="preload" as="style" href="https://www.nukeviet.vn/themes/nukeviet4_vn/css/news.css" type="text/css">
<link rel="preload" as="script" href="https://www.nukeviet.vn/assets/js/jquery/jquery.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nukeviet.vn/assets/js/language/vi.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nukeviet.vn/assets/js/DOMPurify/purify3.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nukeviet.vn/assets/js/global.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nukeviet.vn/assets/js/site.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nukeviet.vn/themes/default/js/news.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nukeviet.vn/themes/nukeviet4_vn/js/main.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nukeviet.vn/themes/nukeviet4_vn/js/bootstrap.min.js" type="text/javascript">
<link rel="StyleSheet" href="https://www.nukeviet.vn/assets/css/font-awesome.min.css">
<link rel="StyleSheet" href="https://www.nukeviet.vn/themes/nukeviet4_vn/css/bootstrap.min.css">
<link rel="StyleSheet" href="https://www.nukeviet.vn/themes/nukeviet4_vn/css/style.css">
<link rel="StyleSheet" href="https://www.nukeviet.vn/themes/nukeviet4_vn/css/style.responsive.css">
<link rel="StyleSheet" href="https://www.nukeviet.vn/themes/nukeviet4_vn/css/news.css">
<style type="text/css">
body{background-image:none!important;background-color:#f4f4f4}
.panel-default .panel-body{background-color:#fff}
</style>
<style type="text/css">
	body{background: #fff;}
</style>
<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-71522940-3', '.nukeviet.vn');
ga('send', 'pageview');
</script>
<meta name="robots" content="noindex, nofollow">
</head>
	<body>
		<noscript>
			<div class="alert alert-danger">Trình duyệt của bạn đã tắt chức năng hỗ trợ JavaScript.<br />Website chỉ làm việc khi bạn bật nó trở lại.<br />Để tham khảo cách bật JavaScript, hãy click chuột <a href="http://wiki.nukeviet.vn/support:browser:enable_javascript">vào đây</a>!</div>
		</noscript>
<div id="print">
	<div id="hd_print">
		<h2 class="pull-left">NukeViet</h2>
		<p class="pull-right"><a title="NukeViet" href="https://www.nukeviet.vn/">https://www.nukeviet.vn</a></p>
	</div>
	<div class="clear"></div>
	<hr />
	<div id="content">
		<h1>Quản lí các thư viện PHP với Composer</h1>
		<ul class="list-inline">
			<li>Thứ tư - 23/12/2015 23:57</li>
			<li class="hidden-print txtrequired"><em class="fa fa-print">&nbsp;</em><a title="In ra" href="javascript:;" onclick="window.print()">In ra</a></li>
			<li class="hidden-print txtrequired"><em class="fa fa-power-off">&nbsp;</em><a title="Đóng cửa sổ này" href="javascript:;" onclick="window.close()">Đóng cửa sổ này</a></li>
		</ul>
		<div class="clear"></div>
		<div id="hometext">
			Composer là một công cụ quản lý các thư viện mà project của bạn sử dụng, bạn chỉ cần khai báo nó, composer sẽ tự động tải code của các thư viện. Trong NukeViet 4 chúng tôi cũng áp dụng phần này để quản lý các thư viện được dùng trong NukeViet.
		</div>
		<div id="bodytext" class="clearfix">
			<h1> Composer là gì?</h1><p> Vài năm trước, nếu bạn có biết đến PHP, chắc hẳn bạn sẽ phải viết lại một mớ code cho các tác vụ cơ bản như xác thực người dùng (đăng nhập/đăng xuất/đăng kí), quản lí database, tích hợp với <a href="http://www.amazon.com/blackfriday?ie=UTF8" rel="nofollow" title="Link added by VigLink">Amazon</a> S3 …. và nhiều tác vụ cơ bản khác. Khi làm việc với các Framework như Zend, hoặc&nbsp;Laravel or&nbsp;Symfony. Để dùng một thành phần của các framework cũng là một điều hết sức khó nhằn vì bạn phải đọc các class để lấy ra thành phần bạn thích (ví dụ như trong các project không dùng Laravel, mình luôn tích hợp Eloquent ORM để dễ dàng thao tác với database).</p><p> Và đây là lí do mà Composer ra đời. Nó giúp bạn quản lí từng package (gói code) riêng lẻ theo từng project. Composer sẽ tự động tải về và quản lí các thư viện mà bạn yêu cầu. Bạn chỉ cần tập trung vào ứng dụng chính cùa mình.</p><p> Cách quản lí này không phải là mới, thực tế thì Composer lấy ý tưởng từ các bộ quản lí như npm của Node.js và Bundler của Ruby.</p><blockquote> <p> Có thể bạn biến đến&nbsp; <a href="http://pear.php.net/">PEAR</a>. Nó cũng có chức năng quản lí các gói code cho PHP từ nhiều năm trước. Nhưng đã bị các lập trình viên từ chối sử dụng vì nhiều lí do. Đầu tiên là hầu hết các gói code trong PEAR đều cũ và không được cập nhật thường xuyên. Thứ hai, PEAR quản lí các gói code trên toàn hệ thống. Nói một cách dễ hiểu thì bạn có 1 project cũ dùng gói code A phiên bản 1.0. Sau đó bạn làm một project mới, và gói code A đó ra mắt phiên bản 2.0 với nhiều tính năng hơn. Tuy nhiên, nếu bạn dùng bản 2.0 cho project mới, project cũ sẽ tự động up-date gói code A lên bản 2.0. Điều này sẽ gây ra không ít thì nhiều sẽ làm cho ứng dụng của bạn hoạt động sai.</p> <p> Tham khảo : <a href="https://philsturgeon.uk/blog/2012/03/packages-the-way-forward-for-php/">Packages: The Way Forward for PHP</a> bởi <strong>Phil Sturgeon</strong></p></blockquote><h2> Bước 1: Cài đặt Composer?</h2><h3> Trên Unix (Mac OSX và Linux)</h3><p> – Chuyển tới thư mục project của bạn và gõ lệnh</p><div class="highlight"> <pre><code class="language-bash" data-lang="bash"><span class="nb">cd</span> /path/to/my/project curl -s <a class="vglnk" href="http://getcomposer.org/installer" rel="nofollow"><span>http</span><span>://</span><span>getcomposer</span><span>.</span><span>org</span><span>/</span><span>installer</span></a> <span class="p">|</span> php</code></pre></div><p> Phiên bản composer mới nhất sẽ được tải về máy bạn.</p><p> Để kiểm tra hãy gõ</p><div class="highlight"> <pre><code class="language-bash" data-lang="bash">php composer.phar</code></pre></div><p> Danh sách các lệnh có sẵn sẽ hiển thị. Thật dễ dàng phải không nào.<br  /> Tuy nhiên để tiện dùng thì các bạn gõ thêm lệnh sau:</p><div class="highlight"> <pre><code class="language-bash" data-lang="bash">sudo mv composer.phar /usr/bin/composer</code></pre></div><p> Từ nay để sử dụng composer ở bất kì thư mục&nbsp;nào, bạn chỉ cần gõ <code>composer</code> Thay vì <code>php composer.phar</code></p><h3> Trên Windows</h3><p> Đơn giản là tải và cài đặt phiên bản Composer mới nhất tại <a href="https://getcomposer.org/Composer-Setup.exe" title="Download Composer">https://getcomposer.org/Composer-Setup.exe</a></p><p> Sau đó bạn có thể dùng composer qua lệnh <code>composer</code> trong CMD hoặc PowerShell</p><p> <strong>Lưu ý:</strong> Composer được viết bằng PHP nên bạn phải cài PHP trước khi cài Composer</p><h2> Bước 2 : File composer.json</h2><p> File <code>composer.json</code> cũng có cấu trúc tương tự như file <code>package.json</code> của npm hay <code>Gemfile</code> của Ruby</p><p> Đây là cấu trúc cơ bản nhất của một file <code>composer.json</code> <code>javascript { &quot;require&quot;: { &quot;cocur/slugify&quot;: &quot;*&quot; } } </code></p><p> Trong ví dụ trên chúng ta đang yêu cầu gói code <code>slugify</code> của tác giả <code>cocur</code> và chúng ta có thể dùng bất cứ phiên bản nào. Để xác định rõ phiên bản, chúng ta có thể thêm vào:</p><div class="highlight"> <pre><code><span class="s2">&quot;cocur/slugify&quot;</span><span class="o">:</span> <span class="s2">&quot;1.0&quot;</span></code></pre></div><p> hoặc kết hợp cả 2</p><div class="highlight"> <pre><code><span class="s2">&quot;cocur/slugify&quot;</span><span class="o">:</span> <span class="s2">&quot;1.0.*&quot;</span></code></pre></div><p> <code>1.0.*</code> có nghĩa là ta chấp nhận cái bản vá lỗi nhỏ như 1.0.2, 1.0.3 nhưng không nâng cấp lên bản 1.1</p><p> Các bạn có thể tìm hiểu thêm về cách yêu cầu phiên bản tại đây</p><h2> Bước 3: Cài đặt các package&nbsp;đã yêu cầu</h2><p> Sau khi đã thiết lập các package cần thiết trong file <code>composer.json</code>. Hãy mở Terminal/CommandPrompt lên và gõ lệnh <code>bash composer install </code></p><p> Đợt 1 tí để Composer tải và cài đặt các package bạn đã yêu cầu (kèm với các package đi kèm). Tất cả các package được tải về sẽ nằm trong thư mục <code>vendor/</code> (thư mục nằm cùng cấp với file composer.json). Nếu thích bạn có thể đổi tên thư mục này tùy thích bằng cách cấu hình :</p><div class="highlight"> <pre><code><span class="p">{</span>     <span class="s2">&quot;require&quot;</span><span class="o">:</span>         <span class="p">{</span>             <span class="s2">&quot;cocur/slugify&quot;</span><span class="o">:</span> <span class="s2">&quot;*&quot;</span>         <span class="p">},</span>     <span class="s2">&quot;config&quot;</span> <span class="o">:</span>         <span class="p">{</span>             <span class="s2">&quot;vendor-dir&quot;</span> <span class="o">:</span> <span class="s2">&quot;packages&quot;</span>         <span class="p">}</span><span class="p">}</span></code></pre></div><h2> Bước 4: Autoloading</h2><p> Đến đây thì mọi việc rất dễ dàng. Trong file chính của project, hãy thêm dòng này vào :</p><div class="highlight"> <pre><code class="language-php" data-lang="php"><span class="x">include_once &#039;./vendor/autoload.php&#039;;</span></code></pre></div><p> Tất cả các package bạn cần bây giờ đã được thêm vào project, sẵn sàng cho bạn sử dụng. Rất dễ dàng phải không nào?</p><p> <strong>Lưu ý</strong> : <em>Nếu ở trên bạn đã thay đổi thư mục vendor thì hãy nhớ chỉnh sửa đường dẫn include phù hợp.</em></p><p> Ví dụ đơn giản sử dụng Slugify trong project của bạn :</p><div class="highlight"> <pre><code class="language-php" data-lang="php"><span class="x">use CocurSlugifySlugify; </span><span class="x">$slugify = new Slugify(); </span><span class="x">echo $slugify-&gt;slugify(&#039;Hello World!&#039;); // hello-world</span></code></pre></div><h2> Bước 5 : Cập nhật package</h2><p> Việc cập nhật rất đơn giản, bạn chỉ cần gõ <code>composer up-date</code> , Composer sẽ tự động cập nhật các package cho bạn. Nếu muốn cập nhật lên các phiên bản mới hơn hoặc các bản release, hãy chỉnh sửa file <code>composer.json</code></p><p> <strong>Chú ý: Không bao giờ chạy lệnh</strong> <code>composer up-date</code> <strong>trong môi trường thực tế (production) mà hãy kiểm tra trên máy để tránh tình trạng không tương thích.</strong></p><h1> Kết luận:</h1><p> Với vài thao tác đơn giản, bạn đã có thể cài đặt cái package cần thiết. Composer giúp lập trình viên giảm bớt suy nghĩ về các package và chỉ tập trung vào ứng dụng chính của mình. Hiện tại, hầu hết các Framework đều hỗ trợ Composer, có thể kể đến như cái tên như : CodeIgniter, Symfony2, Laravel, FuelPHP…</p><p> Tham khảo: <a href="http://code.tutsplus.com/tutorials/easy-package-management-with-composer--net-25530">TutsPlus</a></p>
		</div>
				<div id="author">
						<p>
				<strong>Nguồn tin:</strong>
				khoanguyen.me
			</p>
		</div>
	</div>
	<div id="footer" class="clearfix">
		<div id="url">
			<strong>URL của bản tin này: </strong><a href="https://nukeviet.vn/vi/news/savefile/nhom-phat-trien/Quan-li-cac-thu-vien-PHP-voi-Composer-382.html" title="Quản lí các thư viện PHP với Composer">https://nukeviet.vn/vi/news/savefile/nhom-phat-trien/Quan-li-cac-thu-vien-PHP-voi-Composer-382.html</a>

		</div>
		<div class="clear"></div>
		<div class="copyright">
			&copy; NukeViet
		</div>
		<div id="contact">
			<a href="mailto:admin@nukeviet.vn">admin@nukeviet.vn</a>
		</div>
	</div>
</div>

		<!-- SiteModal Required!!! -->
		<div id="sitemodal" class="modal fade" role="dialog">
			<div class="modal-dialog">
				<div class="modal-content">
					<div class="modal-body">
						<em class="fa fa-spinner fa-spin">&nbsp;</em>
					</div>
					<button type="button" class="close" data-dismiss="modal">
						<span class="fa fa-times"></span>
					</button>
				</div>
			</div>
		</div>
        <div id="timeoutsess" class="chromeframe">
            Bạn đã không sử dụng Site, <a onclick="timeoutsesscancel();" href="https://www.nukeviet.vn/#">Bấm vào đây để duy trì trạng thái đăng nhập</a>. Thời gian chờ: <span id="secField"> 60 </span> giây
        </div>
        <div id="openidResult" class="nv-alert" style="display:none"></div>
        <div id="openidBt" data-result="" data-redirect=""></div>
<script src="https://www.nukeviet.vn/assets/js/jquery/jquery.min.js"></script>
<script>var nv_base_siteurl="/",nv_lang_data="vi",nv_lang_interface="vi",nv_name_variable="nv",nv_fc_variable="op",nv_lang_variable="language",nv_module_name="news",nv_func_name="savefile",nv_is_user=0, nv_my_ofs=-4,nv_my_abbr="EDT",nv_cookie_prefix="nv4c_b1Sp",nv_check_pass_mstime=1738000,nv_area_admin=0,nv_safemode=0,theme_responsive=1,nv_recaptcha_ver=2,nv_recaptcha_sitekey="6LeCch0UAAAAAKrftQUTIjPOxFo5KYJTiFmaH-DJ",nv_recaptcha_type="image",XSSsanitize=1;</script>
<script src="https://www.nukeviet.vn/assets/js/language/vi.js"></script>
<script src="https://www.nukeviet.vn/assets/js/DOMPurify/purify3.js"></script>
<script src="https://www.nukeviet.vn/assets/js/global.js"></script>
<script src="https://www.nukeviet.vn/assets/js/site.js"></script>
<script src="https://www.nukeviet.vn/themes/default/js/news.js"></script>
<script src="https://www.nukeviet.vn/themes/nukeviet4_vn/js/main.js"></script>
<script src="https://www.nukeviet.vn/themes/nukeviet4_vn/js/bootstrap.min.js"></script>
</body>
</html>