تالار گفتمان nCIS.ir

نسخه‌ی کامل: کد نویسی مستقل از قالب
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام ، من میخوام که کد نویسی ام به گونه ای باشه  که  با هر  تغییر قالب نیاز به تغییر کد نویسی نباشه ، به همین جهت    میخوام  کدها  رو به توابعی تقسیم کنم به عنوان مثال  :




function register($username,$password)


   {
        من تابعی هستم وظیفه ثبت نام کاربران را بر  عهده   دارم 


   }


  
function block_user ($username)


   {
       من  تابعی هستم که وظیفه  بررسی  تکراری بودن یا نبودن کاربری را بر  عهده دارم


   }


و
.
.
.
.






ایا روش بالا ، روش صحیحی است ؟ چون فکر می کنم در کتاب ساختمان داده  برای توابع  معایبی هم نوشته شده بود ؟

اصولا روش های کد نویسی مستقل از طراحی چه روش هایی  وجود دارند و  کلمات کلیدی که باید در موردشون جست و جو کنیم  چی هستند ؟
باید به سمت mvc حرکت کنی توی mvc کد های html از کدهای php جداست البته به روش های ساده تری میشه پیاده سازی کرد که در نهایت شما مجبور میشی با mvc جلو بری. می تونی با یکی از فریم ورک های php کار کنی تا این معماری پیاده سازی شده باشه اما اگر خودت بخوای یه mvc مستقل بنویسی یه function به نام autoload لازم داری تا بصورت اتومات کلاس های لازم رو برات اینکلود کنه. پیشنهاد می دم بری سراغ یکی از فریم ورک ها. YII و چیزهای دیگه
سلام ، حتما برای پروژه های بعدی ام این کارو انجام می دم ، اما فعلا میخوام بدونم که ایا روشی که در پست شماره یک بهش اشاره کردم ، می تونم استفاده کنم یا نه ..
در مورد این قسمت هم «« ا اگر خودت بخوای یه mvc مستقل بنویسی یه function به نام autoload لازم داری تا بصورت اتومات کلاس های لازم رو برات اینکلود کنه »»
اگر بیشتر توضیح بدین ممنون میشم .
خوب اگر نخواهی بصورت mvc بنویسی بهتر فانکشن های هم موضوع رو در یک کلاس قرار بدی تا مدیریت فایل های فانکشن و البته بررسی و خطایابی بهتر باشه و البته اگر فانکشن ها رو بصورت static تعریف کنی بهتره ولی با این حال میشه با function  هم نوشت و فانکشن های هم موضوع رو در یه فایل قرار داد .
راجع به این دستور یه بررسی انجام بده :spl_autoload_register
وقتی کلاسی انکلود نشده باشه این دستور یه فانکشن رو صدا می زنه که اسمش در ورودی این دستور اومده در اون فانکشن با توجه $class یه قسمت اجرا میشه ($class نام کلاسی هست که در صورت اینکلود نشدن اسمش در این متغییر قرار گرفته)

<?php
define('SITE_ROOT', dirname(dirname(__FILE__)));
define('PRESENTATION_DIR', SITE_ROOT . '/presentation/');
define('BUSINESS_DIR', SITE_ROOT . '/business/');

function autoload($class)
{
   if($class == 'Application')
   {
       if(file_exists(PRESENTATION_DIR . $class . '.php'))
       {
           require PRESENTATION_DIR . $class . '.php';
       }
       else
           require '../presentation/' . $class . '.php';
   }
   if(file_exists('business/class.' . $class . '.php'))
   {
       require 'business/class.' . $class . '.php' ;
   }
   else if(file_exists('libs/smarty/sysplugins/' . $class . '.php'))
   {
       include 'libs/smarty/sysplugins/' . $class . '.php';
   }
   else if(file_exists('../business/class.' . $class . '.php'))
       include '../business/class.' . $class . '.php';
   else if(file_exists('../business/models/model.' . $class . '.php'))
       include '../business/models/model.' . $class . '.php';
   else if(file_exists('business/models/model.' . $class . '.php'))
       include 'business/models/model.' . $class . '.php';

}
spl_autoload_register('autoload');
?>