/
  • بحث تحلیلی Codeigniter

  • صفحه‌ها (2):
  • ارسال پاسخ   امتیاز موضوع:
    • 2 رأی - میانگین امیتازات: 4
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی بحث تحلیلی Codeigniter
    نویسنده پیام
    hidensoft آفلاین
    عضو ارشد
    *****

    ارسال‌ها: 1,385
    تاریخ عضویت: ۱۳۸۸ شهريور ۳
    اعتبار: 46
    تشکرها : 729
    ( 1395 تشکر در 782 ارسال )
    ارسال: #1
    Lightbulb بحث تحلیلی Codeigniter
    چرا Codeigniter ؟
    من این دلایل رو می تونم برای انتخاب CodeIgniter بیان کنم
    1. ساختار ساده
    2. سرعت بالا
    3. عدم استفاده از MVC های پیچیده و غیر قابل فهم برای برنامه نویسان تازه کار
    4. امکان گسترش هسته بدون تغییر کد های هسته
    5. امکان ایجاد کتابخانه به سادگی
    6. داکیومنت کامل و ساده

    من با اکثر برنامه نویس های این فریم ورک صحبت کردم ، نزدیک 2 سال هم فوکوس کامل داشتم روی این فریم ورک. اکثریت برنامه نویسان این فریم ورک این عوامل رو دخیل بر استفاده از فریم ورک می دونند و مهمترین عامل رو هم دکیومنت ساده و کامل کد ایگنیتر می دونند.

    در مقایسه با دیگر فریم ورک ها خیلی ساده و روان هست و می شه گفت بهترین گذینه برای افرادی که به تازگی این کار رو شروع کردند و برای آشنایی با فریم ورک می تونند به راحتی روی این فریم ورک کار کنند. اما این فریم ورک دارای عیب هایی هم هست از جمله نداشتن یک orm مناسب. متاسفانه ( به نظر من ) با ایجاد Active Record ها فقط کار خودشون رو دشوار کردن و چه بسیار راحت تر بود نوشتن یک ORM تا نوشتن یک اکتیو رکورد. اما حالا واقعا بهتر شده در نسخه های قدیم یه باگ خیلی بزرگ توی همین اکتیو رکورد داشتند که خوشبختانه به دادش رسیدن اما دیر. متاسفانه Full VIEW SUPPORT هم نیست.

    با هم یه نگاهی به ام وی سی این فریم ورک می کنیم
    [تصویر:  appflowchart.gif]
    همین طور که می بینید کار خیلی ساده ای رو انجام می ده در مقابل دیگر فریم ورک ها. از طرفی معمولا برنامه نویسان تازه کار بیشتر از این هم توقع ندارند و معمولار کارهاشون با همین فریم ورک راه می افته.

    به نظر من این فریم ورک می تونه کار آمد باشه اما نمی شه روش به عنوان یک فریم ورک کاملا حرفه ای حساب بازکرد چون از نظر حرفه ای هم خیلی MVC ضعیف تری داره. CI بطور کامل ساخته شده توسط Ellislab, Inc از صفر نوشته شده و هسته خاصی هم استفاده نشده و تماما کار خودشون.
    CodeIgniter URLs
    URL ها به سادگی سازماندهی شدند واز ترفند خاصی استفاده نشده به علاوه اینکه شما نمی تونید هر کارکتری برای URL انتخاب کنید . یادمه قبلا مجبور شدم تغییراتی انجام بدم تا URL فارسی رو قبول کنه
    کد PHP:
    example.com/class/function/arg1/arg2.. 
    پشتیبانی از URL Suffix
    در تنظیمات این قابلیت وجود داره که بتونید پسوند دلخواه خودتون رو به URL اضافه کنید
    پشتیبانی از Query Strings
    می تونید URL رو به این صورت تغییر بدید
    کد PHP:
    index.php?c=products&m=view&id=345 

    Controllers
    به سادگی با این کد می تونید یک کنترل داشته باشید
    کد PHP:
    <?php
    class Blog extends Controller {

        function 
    index()
        {
            echo 
    'Hello World!';
        }
    }
    ?>
    کافیه فانکشن های جدیدی رو اضافه کنید و کنترلر خودتون رو کامل کنید
    به عنوان مثال برای ارسال اطلاعات مانند GET باید این کار رو بکنید
    برای این URL
    کد PHP:
    example.com/index.php/products/shoes/sandals/123 

    کد PHP:
    <?php
    class Products extends Controller {

        function 
    shoes($sandals$id)
        {
            echo 
    $sandals;
            echo 
    $id;
        }
    }
    ?>
    output
    کد PHP:
    // sandals 123 

    Processing Output
    امکان گرفتن خروجی بصورت فانکش هم وجود داره ، به این صورت
    کد PHP:
    function _output($output)
    {
        echo 
    $output;


    Private Functions
    این قابلیت وجود داره که در یک کنترل توابعی رو به عنوان توابع Private بنویسید که این توابع از طریق URL قابل دسترس نیستند
    کد PHP:
    function _utility()
    {
      
    // some code

    کد PHP:
    example.com/index.php/blog/_utility
    آندرلاین در ابتدای نام تابع باعث Private شدن تابع می شه

    Views
    ویو در کدایکنیتر خیلی ساده پایه ریزی شده فقط کافیه با این دستور View مورد نظر خودتون رو که در پوشه view وجود داره فراخونی کنید
    کد PHP:
    $this->load->view('name'); 
    توجه : در CI ویو به صورت خود کار فراخوانی نمی شه و شما باید در انتهای فانکشن ویو مورد نظر خودتون رو فراخوانی کنید
    ار سال مقادیر به ویو هم توسط آرایه و آجکت امکان پذیر هست
    کد PHP:
    $data = array(
                   
    'title' => 'My Title',
                   
    'heading' => 'My Heading',
                   
    'message' => 'My Message'
              
    );

    $this->load->view('blogview'$data);
    // or
    $data = new Someclass();
    $this->load->view('blogview'$data); 

    کد PHP:
    <html>
    <
    head>
    <
    title><?php echo $title;?></title>
    </head>
    <body>
        <h1><?php echo $heading;?></h1>
    </body>
    </html> 

    امکان دریافت خروجی تنها هم در ویو وجود داره
    کد PHP:
    $string $this->load->view('myfile'''true); 

    Models
    مودل ها هم در حد امکان ساده پایه ریزی شدن

    با این دستور مودل فراخوانی می شه
    کد PHP:
    $this->load->model('Model_name'); 
    مسیر مودل هم باید به این صورت باشه
    کد:
    application/models/user_model.php
    بعد از فراخوانی هم به این صورت می تونید استفاده کنید
    کد PHP:
    $this->Model_name->function(); 
    می تونید برای مودل یک نام نمایشی یا همون Alias در نظر بگیرید
    کد PHP:
    $this->load->model('Model_name''fubar');

    $this->fubar->function(); 

    نمونه یک مودل
    کد PHP:
    class Blog_controller extends Controller {

        function 
    blog()
        {
            
    $this->load->model('Blog');

            
    $data['query'] = $this->Blog->get_last_ten_entries();

            
    $this->load->view('blog'$data);
        }

    Helper Functions
    CI برای پوشش ویو یک سری فانکشن به عنوان Helper تعریف کرده که شما می تونید از توابع اون در ویو استفاده کنید
    برای فراخوانی می تونید از روش های زیر استفاده کنید
    1. فراخوانی تکی
    کد PHP:
    $this->load->helper('name'); 
    2. فراخوانی بصورت چند پارامتری
    کد PHP:
    $this->load->helper( array('helper1''helper2''helper3') ); 
    3. فراخوانی توسط aautoload
    کد:
    application/config/autoload.php
    نمونه یک هلپر
    کد PHP:
    // any_in_array() is not in the Array Helper, so it defines a new function
    function any_in_array($needle$haystack)
    {
        
    $needle = (is_array($needle)) ? $needle : array($needle);

        foreach (
    $needle as $item)
        {
            if (
    in_array($item$haystack))
            {
                return 
    TRUE;
            }
            }

        return 
    FALSE;
    }

    // random_element() is included in Array Helper, so it overrides the native function
    function random_element($array)
    {
        
    shuffle($array);
        return 
    array_pop($array);

    البته باید به این پارامتر در کافیگ هم دقت کنید
    کد PHP:
    $config['subclass_prefix'] = 'MY_'

    Plugins
    پلاگین ها در CI قبل از کتابخانه ها لود می شوند البته اگر بصورت autoload تعریف بشند و گر نه که در زمان فراخونی لود می شوند

    نحوه فراخوانی هم همانند Helper هست با این تفاوت که بجای load->helper از load->plugin استفاده می شه
    کد PHP:
    $this->load->plugin('name');
    $this->load->plugin( array('plugin1''plugin2''plugin3') ); 

    البته باید توجه کنید که پلاگین ها می تونند کلاس نباشند

    Libraries
    کتابخانه ها کلاس هایی هستند که شما می تونید در پروژه خودتون لود و استفاده کنید
    کد PHP:
    $this->load->library('class name'); 


    Hooks - Extending the Framework Core
    Hooks ها وضیفه اعمال تغییرات بر روی هسته کدایگنیتر رو دارند برای شما ابتدا باید در فایل کانفیگ application/config/config.php این تنظیم رو انجام بدید

    کد PHP:
    $config['enable_hooks'] = TRUE

    ادامه دارد.
    ۱۳۸۸ دي ۱۸ ۰۸:۵۶ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : zoghal parvane amir.s Alimokhlesi arlabbafi oia scooter HiddeN admin molana Maya smhnaji hamid_80386 Maysam.m
    arlabbafi آفلاین
    آرسنال
    **

    ارسال‌ها: 44
    تاریخ عضویت: ۱۳۸۷ اسفند ۱
    اعتبار: 1
    تشکرها : 11
    ( 25 تشکر در 7 ارسال )
    ارسال: #2
    RE: بحث تحلیلی Codeigniter
    سلام تغييراتي كه گفتي براي urlهاي فارسي دادي رو ميشه به ما هم بگي؟
    ۱۳۸۸ دي ۱۹ ۱۱:۲۹ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    zoghal آفلاین
    صالح سوزنچی
    *****

    ارسال‌ها: 1,760
    تاریخ عضویت: ۱۳۸۷ دي ۲۵
    اعتبار: 23
    تشکرها : 1500
    ( 1729 تشکر در 992 ارسال )
    ارسال: #3
    RE: بحث تحلیلی Codeigniter
    متاسفانه همین نداشتن orm برای کسانی که در حال حاضر دارند با این فریم ورک کار میکنند. مشکلاتی ایجاد کرده. چند وقتی هست که یک بازی آنلاین رو یک تیم با این فریم ورک پیاده سازی کرده. و الان با مشکلات زیادی در زمینه دیتابیس و کم آوردن این پروژه در مقابل مراجعه کنندگان مواجه شده .

    فعلا یک سرور 8 هسته ای و 12 گیگ رم جواب گوی این پروژه نیست.
    ۱۳۸۸ دي ۱۹ ۰۵:۰۳ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,734
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6196 تشکر در 3438 ارسال )
    ارسال: #4
    RE: بحث تحلیلی Codeigniter
    صفحه اول یادتون نره بچه هااااااااااااااا
    ۱۳۸۸ دي ۱۹ ۰۵:۵۶ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    hidensoft آفلاین
    عضو ارشد
    *****

    ارسال‌ها: 1,385
    تاریخ عضویت: ۱۳۸۸ شهريور ۳
    اعتبار: 46
    تشکرها : 729
    ( 1395 تشکر در 782 ارسال )
    ارسال: #5
    RE: بحث تحلیلی Codeigniter
    نقل قول: صفحه اول یادتون نره بچه هااااااااااااااا
    چیکار کنیم اعلان ؟
    نقل قول: متاسفانه همین نداشتن orm برای کسانی که در حال حاضر دارند با این فریم ورک کار میکنند.
    در ادامه می گم که چطور Doctrine رو به Codeigniter وصل کنید
    چطوری به این فریم ورک Layout اضافه کنید
    چطوری از Ajax در Codeigniter
    و ....

    حدود 2..3 سال روی این فریم ورک کار کردم و با زیر و بم اون به طور کامل آشنایی دارم.
    به نظر می تونه فریم ورک خوبی باشه اما برای کار های کوچیک ، کار های بزرگ فقط مخصوص Symfony هستند.
    نقل قول: سلام تغييراتي كه گفتي براي urlهاي فارسي دادي رو ميشه به ما هم بگي؟
    چشم فقط اعلان یکم درگیرم به محض اینکه وقتم آزاد بشه آموزش کاملی در این ضمینه ارائه می کنم
    (آخرین ویرایش در این ارسال: ۱۳۸۸ دي ۱۹ ۰۶:۴۹ عصر، توسط hidensoft.)
    ۱۳۸۸ دي ۱۹ ۰۶:۴۸ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : oia molana Maysam.m
    hidensoft آفلاین
    عضو ارشد
    *****

    ارسال‌ها: 1,385
    تاریخ عضویت: ۱۳۸۸ شهريور ۳
    اعتبار: 46
    تشکرها : 729
    ( 1395 تشکر در 782 ارسال )
    ارسال: #6
    RE: بحث تحلیلی Codeigniter
    نقل قول: سلام تغييراتي كه گفتي براي urlهاي فارسي دادي رو ميشه به ما هم بگي؟
    بخاطر دیر شدن معذرت خواهی می کنم.

    ببینید در CI توسط کانفیگ و یه کتابخانه به نام URI تمامی کارهای مربوط به URL ها انجام می شه.
    در حال حاضر ( متاسفانه ) URL ها به این صورت تشخیص داده می شوند که یک سری کارکتر های مجاز وجود داره در فایل کانفیگ و در کتابخانه URI اگر URL جزئی از این کارکتر ها بود اجازه اجرا داده می شه و گر نه که شما با خطای The URI you submitted has disallowed characters مواجه خواهید شد. چون ( دلیلش رو نمی دونم) شما نمی تونید در رگولار کارکتر های فارسی رو پیاده سازی کنید ( حداقل من نتونستم) مجبورید بیاید و صورت مسئله رو تغییر بدید. یعنی به جای اینکه بگیم این کارکتر ها مجاز هستند می گیم این کارکتر ها غیر مجاز هستند.
    برای شروع به فولدر Config در application برید و فایل config.php رو در یک ادیتور باز کنید. خط شماره 126
    کد PHP:
    $config['permitted_uri_chars'] = 'a-z ~%.:_\-'
    خط بالا رو با خط پایین جایگذین کنید
    کد PHP:
    $config['permitted_uri_chars'] = '~%.:_\-'

    سپس در فایل URI.php در مسیر system/libraries در خط 191
    کد PHP:
    if ( ! preg_match("|^[".str_replace(array('\\-','\-')),'-',preg_quote($this->config->item('permitted_uri_chars'))."]+$|i"$str)) 
    خط بالا رو با خط پایین جایگذین کنید
    کد PHP:
    if ( ! preg_match("|^[\w".str_replace(array('\\-','\-')),'-',preg_quote($this->config->item('permitted_uri_chars'))."]+$|i"$str)) 

    البته اگر از نسخه های قدیمی تر استفاده می کنید باید در خط 189
    کد PHP:
    if ( ! preg_match("|^[".preg_quote($this->config->item('permitted_uri_chars'))."]+$|i"$str)) 
    خط بالا رو با خط پایین جایگذین کنید
    کد PHP:
    if ( ! preg_match("|^[\w".preg_quote($this->config->item('permitted_uri_chars'))."]+$|i"$str)) 
    ۱۳۸۸ دي ۲۱ ۱۲:۳۳ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : oia scooter arlabbafi Maysam.m
    scooter آفلاین
    عضو مهم
    ****

    ارسال‌ها: 391
    تاریخ عضویت: ۱۳۸۷ دي ۳
    اعتبار: 3
    تشکرها : 239
    ( 54 تشکر در 42 ارسال )
    ارسال: #7
    RE: بحث تحلیلی Codeigniter
    سلام .به قول معروف لذت بردیم. ممنون
    من به شدت مشتاقم در مورد layout ,ajax در ci صحبت کنی
    __________________________________________________________________________
    welcome to the club
    ۱۳۸۸ دي ۲۲ ۱۰:۳۵ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    hidensoft آفلاین
    عضو ارشد
    *****

    ارسال‌ها: 1,385
    تاریخ عضویت: ۱۳۸۸ شهريور ۳
    اعتبار: 46
    تشکرها : 729
    ( 1395 تشکر در 782 ارسال )
    ارسال: #8
    RE: بحث تحلیلی Codeigniter
    چشم ، امشب آموزش اینکه چطور Layout در Codeigniter ضاضافه کنیم و می زارم
    ۱۳۸۸ دي ۲۲ ۱۰:۳۸ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : scooter
    behrooz_heyhu آفلاین
    عضو جدید
    **

    ارسال‌ها: 34
    تاریخ عضویت: ۱۳۸۸ مهر ۲۷
    اعتبار: 1
    تشکرها : 32
    ( 52 تشکر در 13 ارسال )
    ارسال: #9
    RE: بحث تحلیلی Codeigniter
    سلام دوستان
    من یه چیزایی در مورد Doctrine و نحوه ی اتصال به اون رو برای codeigniter اینجا پیدا کردم اگه کسی علاقه داشت بره ببینه خیلی جالبه !!
    راستی میشه در مورد این Layout برا codeigniter بیشتر توضیح بدین اصلا چی هست این Layout
    با تشکر
    ۱۳۸۸ بهمن ۱۴ ۱۱:۵۴ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    hidensoft آفلاین
    عضو ارشد
    *****

    ارسال‌ها: 1,385
    تاریخ عضویت: ۱۳۸۸ شهريور ۳
    اعتبار: 46
    تشکرها : 729
    ( 1395 تشکر در 782 ارسال )
    ارسال: #10
    RE: بحث تحلیلی Codeigniter
    چشم . حتما .منتظر باشید. به زودی Big Grin
    ۱۳۸۸ بهمن ۱۴ ۰۲:۵۵ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

  • صفحه‌ها (2):
  • ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS