نمایش نتایج 1 تا 3 از 3

نام تاپیک: مشکل در فهمیدن یک کد ؟

  1. #1
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    اصفهان
    پست
    232

    مشکل در فهمیدن یک کد ؟

    سلام به دوستان ، من یه مشکلی توی این کد میبینم ،
    function fetchAllUsers()
    {
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("SELECT
    id,
    user_name,
    display_name,
    password,
    email,
    activation_token,
    last_activation_request,
    lost_password_request,
    active,
    title,
    sign_up_stamp,
    last_sign_in_stamp
    FROM ".$db_table_prefix."users");
    $stmt->execute();
    $stmt->bind_result($id, $user, $display, $password, $email, $token, $activationRequest, $passwordRequest, $active, $title, $signUp, $signIn);

    while ($stmt->fetch()){
    $row[] = array('id' => $id, 'user_name' => $user, 'display_name' => $display, 'password' => $password, 'email' => $email, 'activation_token' => $token, 'last_activation_request' => $activationRequest, 'lost_password_request' => $passwordRequest, 'active' => $active, 'title' => $title, 'sign_up_stamp' => $signUp, 'last_sign_in_stamp' => $signIn);
    }
    $stmt->close();
    return ($row);
    }

    این function زیرمجموعه از یک کلاس هستش ، طرف اومده و global $mysqli,$db_table_prefix و توی هر تابعش اینها دیده میشه ، چه فرقی داره بین اینکه ما اینا را در اول کلاس به صورت private تعریف کنیم با اینکه بیایم و مثل همین طرف ، اینها را به صورت Global تعریف کنیم . یه سوال دیگه هم داشتم :
    به نظر شما این کد منطقی هست :
    <?php
    class functionClass
    {
    private $_dblocal = "localhost";
    private $_dbuser = "root";
    private $_pass = "";
    private $_dbname = "meSaeed";
    private $_dbtable;
    private $_dbsql;
    protected $_username;
    //
    function __construct()
    {
    $config = mysql_connect($this->_dblocal,$this->_dbuser,$this->_pass) or mysql_error();
    mysql_select_db($this->_dbname,$config) or mysql_error();
    }
    function SetTable($dbtable)
    {
    $this->_dbtable = $dbtable;
    return $this->_dbtable;
    }
    //User's Function ...
    function existUsername($username)
    {
    global $mysql;
    self::SetTable("login");
    $this->_username = $username;
    $this->_dbsql = "SELECT * FROM ".$this->_dbtable." WHERE username = '".$this->_username."'";
    $mysql = mysql_query($this->_dbsql);
    if(mysql_num_rows($mysql) == 1)
    {
    return true;
    }
    else
    {
    return false;
    }
    }
    }
    ?>

    یعنی بهتر از این هم میشه نوشت ، منظور درباره ی این هست که بیایم یه تابع تغریف کنیم به نام settable و این تابع را در هر تابعی که خواستیم self کنیم ، یعنی منطی هست و چیزه بهتر از این هم وجود داره ؟

  2. #2

    نقل قول: مشکل در فهمیدن یک کد ؟

    در مورد سوال اولت باید بگم که استفاده از global معمولا در برنامه نویسی تابعی یا functional کاربرد داره برای برنامه نویسی به صورت شیء گرا بهتره که از property ها یا همون متغیر های داخل کلاس استفاده کنیم.
    سوال دومت رو درست متوجه نشدم.اما این کلاسی که گذاشتی ایراد زیاد داره.اول اینکه همینطور که قبلا گفتم استفاده از global در برنامه نویسی شیء گرا کاربردی نداره.دوم اینکه بهتره که در تابع سازنده به dbtable مقدار دهی کنیم.یا اگر تعداد متغیرها زیاد بود از توابع جادویی __set و __get و __call استفاده کنیم.
    اگر میخوای شیء گرا برنامه نویسی کنی از همه امکاناتش استفاده کن.سک مثال میزنم برات :

    فرض کن یه کلاس داری که اعمال اصلی رو توی دیتابیس انجام میده :
    class db
    {
    function __construct(){}

    function insert(){}

    function delete(){}

    function edit(){}

    function selecet(){}


    }

    خب حالا باید برای هر کدوم از جداول توی دیتابیس یک کلاس بسازی که از کلاس db ارث بری کنه :
    class News extends db
    {

    }

    برای راحتی کار و خوانایی بیشتر اسم کلاست رو همنام اسم جدولت بذار.
    حالا وقتی از کلاس News یک شیء میسازی به تمام متدها public کلاس db دسترسی داری.که میتونی ازشون استفاده کنی.اما باید نام جدول رو هم به کلاس db ارسال کنی. پس کار زیر رو میکنیم :

    class db{

    private $table;

    function __construct()
    {

    $this->table = get_class($this);
    }
    }

    با اینکار نام کلاس فرزند رو میگیره و در متغیر $table میریزه
    نمیدونم چوابت رو گرفتی یا زدم تو خاکی :D

  3. #3
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    اصفهان
    پست
    232

    نقل قول: مشکل در فهمیدن یک کد ؟

    نقل قول نوشته شده توسط Mr.Moghadam مشاهده تاپیک
    در مورد سوال اولت باید بگم که استفاده از global معمولا در برنامه نویسی تابعی یا functional کاربرد داره برای برنامه نویسی به صورت شیء گرا بهتره که از property ها یا همون متغیر های داخل کلاس استفاده کنیم.
    سوال دومت رو درست متوجه نشدم.اما این کلاسی که گذاشتی ایراد زیاد داره.اول اینکه همینطور که قبلا گفتم استفاده از global در برنامه نویسی شیء گرا کاربردی نداره.دوم اینکه بهتره که در تابع سازنده به dbtable مقدار دهی کنیم.یا اگر تعداد متغیرها زیاد بود از توابع جادویی __set و __get و __call استفاده کنیم.
    اگر میخوای شیء گرا برنامه نویسی کنی از همه امکاناتش استفاده کن.سک مثال میزنم برات :

    فرض کن یه کلاس داری که اعمال اصلی رو توی دیتابیس انجام میده :
    class db
    {
    function __construct(){}

    function insert(){}

    function delete(){}

    function edit(){}

    function selecet(){}


    }

    خب حالا باید برای هر کدوم از جداول توی دیتابیس یک کلاس بسازی که از کلاس db ارث بری کنه :
    class News extends db
    {

    }

    برای راحتی کار و خوانایی بیشتر اسم کلاست رو همنام اسم جدولت بذار.
    حالا وقتی از کلاس News یک شیء میسازی به تمام متدها public کلاس db دسترسی داری.که میتونی ازشون استفاده کنی.اما باید نام جدول رو هم به کلاس db ارسال کنی. پس کار زیر رو میکنیم :

    class db{

    private $table;

    function __construct()
    {

    $this->table = get_class($this);
    }
    }

    با اینکار نام کلاس فرزند رو میگیره و در متغیر $table میریزه
    نمیدونم چوابت رو گرفتی یا زدم تو خاکی :D
    ممنون ولی این آخری رو نفهمیدم منظورم کلاس آخری بود .؟؟؟

تاپیک های مشابه

  1. یک مشکل هنگام کپی کردن فایل مربوط به بانک
    نوشته شده توسط ghaum در بخش SQL Server
    پاسخ: 4
    آخرین پست: یک شنبه 25 اردیبهشت 1384, 23:00 عصر
  2. مشکل در دسترسی به Interbase
    نوشته شده توسط Mahdiseif در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 8
    آخرین پست: سه شنبه 26 فروردین 1382, 00:03 صبح
  3. مشکل در بی دی ای دلفی
    نوشته شده توسط hosseinabdollah در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 1
    آخرین پست: یک شنبه 17 فروردین 1382, 17:38 عصر
  4. مشکل ارسال ایمیل در سایت
    نوشته شده توسط mahmoodreza در بخش گفتگو با مسئولین سایت، درخواست و پیشنهاد
    پاسخ: 2
    آخرین پست: شنبه 16 فروردین 1382, 14:24 عصر
  5. مشکل در نمایش Time
    نوشته شده توسط (امید) در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 4
    آخرین پست: شنبه 24 اسفند 1381, 10:23 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •