PDA

View Full Version : آموزش: آموزش composer



azowghi
پنج شنبه 02 مرداد 1393, 23:04 عصر
سلام به همه رفقا و پیروان حقیقی مکتب متن باز (open source)
چرا چرخ رو دوباره اختراع کنیم .. reinvent the wheel

http://en.wikipedia.org/wiki/Reinventing_the_wheel

همیشه برام این مساله وجود داشت که کدها چطور میتونه از لحاظ سرعت و استاندارد و همچنین غنی بودن از هر لحاظ یک کد کامل باشه.
برای این کار باید بتونیم از کتابخانه ها و کلاس های سیستم های قدرتمند دیگه در کدمون استفاده کنیم.

کامپوزر نام ابزاری است که بوسیله اون میتونید کلاس های نوشته شده برای فریمورک ها و سیستم های مختلف رو توی سیستم خودتون به کار بگیرین. نکته ای که این میان هست اینه که وقتی یه همچین کاری بخواد انجام بشه ممکنه اون کلاسی که میخواین استفاده کنید یک سری وابستگی هایی داشته باشه . بدین معنا که ممکنه از کلاس یا کلاس های دیگری در این کلاس استفاده شده باشه و مجبور باشین یکی یکی اون ها رو هم به پروژه اتون اضافه کنید.
کامپوزر میاد تمام وابستگی های هر کلاس رو هم باهاش دانلود میکنه و به پروژه اتون اضافه میکنه .
وقتی کلاس مورد نظر رو دانلود کردین فقط کافیه توی پروژه یه خط کد اضافه کنید تا تمام کلاس ها بطور خودکار در صفحه یا صفحه ای مختلفی از پروژه اتون اضافه بشه.

بسم ا..


راه حل این کار رو در آموزش زیر ببینید:


https://getcomposer.org


این ابزار رو دانلود کنید. بدین شکل:




curl -sS https://getcomposer.org/installer | php


وقتی اینو بزنید یه فایل دانلود میشه بنام composer.phar ، برای اینکه بطور سراسری بتونید ازش توی کامند استفاده کنید باید تغییر نامش بدین به composer و انتقالش بدین به پوشه زیر:

/usr/local/bin

خب حالا میتونید از کامپوزر استفاده کنید..

من دستورات کامند رو برای استفاده از پکیج finder متعلق به فریمورک سیمفونی رو مینویسم فکر کنم گویاست ، اگر سوالی بود در خدمتم:


ali:~$ cd /opt/lampp/htdocs/mycms
ali:/opt/lampp/htdocs/mycms$ sudo composer init


اینجا ازتون میخواد که یک اسم انتخاب کنید برای دانلود پکیج ها مثلا میتونم بگم هرچی میگیری رو برام در آدرس source/symfony کپی کن اگر هیچی ننویسین خودش بطور پیشفرض میاد یه فولدر بنام vendor میسازه توی فولدر mycms و اونجا پکیج ها رو میریزه. من هیچی نمینویسم تا پیشفرض سیستم انجام بشه.

Package name (<vendor>/<name>) [ali/mycms]:
Description []:
Author:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? yes
Search for a package []: finder

Found 15 packages matching finder

[0] symfony/finder
[1] nette/finder
[2] sebastian/finder-facade
[3] mindy/finder
[4] webignition/website-sitemap-finder
[5] dflydev/symfony-finder-factory
[6] shrink/finder-facade
[7] webignition/website-rss-feed-finder
[8] webignition/html-document-link-finder
[9] jflight/nearby-uk-postcode-finder
[10] hoa/file
[11] dalanhurst/abbreviation-finder-plugin
[12] ymc/symfony-component-factory-bundle
[13] ehough/finder
[14] johnshopkins/environment-finder

Enter package # to add, or the complete package name if it is not listed []: 0
Enter the version constraint to require []: @stable
Search for a package []:
Would you like to define your dev dependencies (require-dev) interactively [yes]?
Search for a package []:

{
"name": "ali/mycms",
"require": {
"symfony/finder": "@stable"
}
}

Do you confirm generation [yes]? yes



خب مراحل فوق رو که انجام دادین باید دستور زیر رو اجرا کنید تا پکیج یا پکیج هایی رو که درخواست کردین دانلود بشه:


ali:~$ sudo composer install
Loading composer repositories with package information
Installing dependencies (including require-dev)
- Installing symfony/finder (v2.5.2)
Loading from cache

Writing lock file
Generating autoload files


اگر دانلود پکیج موفقیت آمیز بود پیغام بالا رو مشاهده میکنید.

نکته: یک نکته در دستور زیر:

Enter the version constraint to require []: @stable

اینجا از ما ورژن پکیج مورد نظر رو میخواد که ما بهش میگیم آخرین ورژن پایدار رو بهمون بده . ورژن دیگه ای رو خواستین میتونید برین توی سایت

https://packagist.org/

و توی اونجا سرچ کنید و ورژن مورد نظر رو پیدا کنید ( مثلا : v2.5.2 )


حالا برای بکارگیری این پکیج در پروژه اتون کافیه بصورت زیر عمل کنید:


// /opt/lampp/htdocs/mycms/test.php

<?php

require_once 'vendor/autoload.php';

$finder = new \Symfony\Component\Finder\Finder();
$finder->files()->in(__DIR__);

foreach ($finder as $file) {
// Print the absolute path
print $file->getRealpath()."<br>";

// Print the relative path to the file, omitting the filename
print $file->getRelativePath()."<br>";

// Print the relative path to the file
print $file->getRelativePathname()."<br>";
}


?>

نکته : بهتره برای هر کلاس یک vendor بسازین تا با اتولود (autoload) کردن یک منبع تمام کلاس های غیر وابسته ی دیگه در جایی که ممکنه نیاز نباشه لود نشه بدین شکل:

/opt/lampp/htdocs/mycms/lib/finder



که گفتم توی کامند ازتون نام فولدر منبع رو میخواد :
Package name (<vendor>/<name>) [ali/mycms]: lib/finder

در پناه خدا

koorosh4
شنبه 04 مرداد 1393, 12:29 عصر
سلام به همه رفقا و پیروان حقیقی مکتب متن باز (open source)



سلام من کامپوزر را در ویندوز نصب کردم . اما نمیدونم کجا رفت . نصب شد ارور هم نداد . اما نه آیکونی ساخت و نه در استارت منو ازش چیزی هست . توی wamp هم رفتم گفتم شاید خودکار اونجا نصب شده هیچی نبود . حالا چطور باید پیدا کردش و چطور باید ازش استفاده کرد ؟
ممنون میشم جواب بدی.

afee1990
شنبه 04 مرداد 1393, 13:50 عصر
composer رو باید تحت command-line و Terminal کار کنی باهاش. البته تو ویندوز به منوی راست-کلیک ماوس چند تا از عملیات‌هاش اضافه میشه که با اونها هم میتونی کار کنی.

احسان!
شنبه 04 مرداد 1393, 13:50 عصر
سلام من کامپوزر را در ویندوز نصب کردم . اما نمیدونم کجا رفت . نصب شد ارور هم نداد . اما نه آیکونی ساخت و نه در استارت منو ازش چیزی هست . توی wamp هم رفتم گفتم شاید خودکار اونجا نصب شده هیچی نبود . حالا چطور باید پیدا کردش و چطور باید ازش استفاده کرد ؟ ممنون میشم جواب بدی. سلام از خط فرمان باید استفاده کنید.(CMD)