• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
چند سوال درباره کلاسها
#1
سلام دوستان میبخشید چند وقت نبودمBlush حسابی کار داشتم و تو یک سایت مدیر شدم و کار های دیگه اجازه شرکت در این سایتو بهم نمیدادConfused
دوستان من در مبحث کلاسها چند تا مشکل داشتم گفتم بپرسم .
سوال اول : تابع __construct() در مبحث کلاسها به چه دردی میخوره؟ (میشه با مثال توضیح بدید)
سوال دوم : تابع __get() و __set() به چه دردی میخورن؟Sad( اینم با مثال باشه بهتره!Big Grin)
سوال سوم : تابع __autoload() به چه کاری میاد؟ Undecided (اینم با مثال باشهWink)
سوال چهارم : تابع __toString() به چه کاری میاد؟ Blush ( اینم مثال داشت که بهتر Cool)

یه سوال دیگم هست که گفتم دیگه تایپک باز نکنم اینه که ما موتور 7 رنگ قالب رو با کلاس بنویسیم سرعت لود بیشتره یا با جایگزینی (str_replace() ) Huh

ممنون از این سایت خوبتون...
  پاسخ
تشکر شده توسط :
#2
Constructors and Destructors
کد پی‌اچ‌پی:
__construct() 
محتوایت این فانکشن در زمان ساخت شی اجرا می شه و اگر این تابع پارامتر هایی رو بخواد باید در زمان ساخت شی به کلاس ارجا داده بشه


کد پی‌اچ‌پی:
<?php
class MyDestructableClass {
   function 
__construct() {
       print 
"In constructor\n";
       
$this->name "MyDestructableClass";
   }

   function 
__destruct() {
       print 
"Destroying " $this->name "\n";
   }
}

$obj = new MyDestructableClass();
?>
overloading
کد پی‌اچ‌پی:
__get() 
محتویات این تابع هنگامی که شما مقداری رو درخواست می کنید اجرا می شه
کد پی‌اچ‌پی:
__set() 
محتویات این تابع هم هنگامی که مقداری رو می فرستید اجرا می شه
کد پی‌اچ‌پی:
<?php
//There's the class now let's see it in use

$t = new Test();
$t->MyProp "Property1";
echo 
$t->MyProp;

/*
when you print_r the object you will see these results

Test Object
(
  [properties] => Array
  (
    [MyProp] => Property1
  )
)
*/
?>
برای اطلاعات بیشتر مبحث Overloading رو مطالعه بفرمایید

Autoloading Classes
کد پی‌اچ‌پی:
__autoload() 
اینجا توضیح داده شده
Magic Methods
کد پی‌اچ‌پی:
__toString() 
این تابع هم زمانی که شما مستقیما از کلاس در خواست خروجی می کنید بدون استفاده از توابع یا متغیر محتویاتش اجرا می شه

کد پی‌اچ‌پی:
<?php
// Declare a simple class
class TestClass
{
    public 
$foo;

    public function 
__construct($foo) {
        
$this->foo $foo;
    }

    public function 
__toString() {
        return 
$this->foo;
    }
}

$class = new TestClass('Hello');
echo 
$class;
?>

در مورد سوال آخر من درست متوجه نشدم اما احساس می کن تابع replace خیلی سریع تر از یک موتور قالب کار می کنه
  پاسخ
تشکر شده توسط : faghani admin zoghal HiddeN paull
#3
ممنون از سرعت بالای پاسخگوییتونHeart
ولی این __construct() رو متوجه نشدمBlush
مثالش خیلی گیج کننده بودUndecided
اگه میشه مثالی کاربردی بزنWink
  پاسخ
تشکر شده توسط :
#4
mysqli رو می شناسی؟
کد پی‌اچ‌پی:
<?PHP

$db 
= new mysqli('hostname''username''password''database');
?>
لحظه ایی که داریم شی رو ایجاد می کنیم، پارامتر هایی رو به کلاس می دیم.
بایه کلاس مثه یک تابع رفتار شده دیگه
حالا باید شما تابع معادلش رو توی کلاس بنویسید. این کار رو به کمک تابع construct__ انجام می دی. یعنی یک تابع با این نام ایجاد می کنی
سادست خودت یکبار امتحان کن
کد پی‌اچ‌پی:
<?PHP

class test
{
    function 
__construct($test)
    {
        echo 
$test;
    }
}

$obj = new test('aliReza');
?>
  پاسخ
تشکر شده توسط : faghani
#5
سلام من با کلاس mysqli یک مشکل دارم !
از این کلاس تو کدم استفاده کردم این خطا رو میده :

Fatal error: Class 'mysqli' not found in public_html/website/ma/manager/db.inc.php on line 7

من از پنل cpanel استفاده می کنم !!!
مشکل چیه ؟
چرا این کلاس رو پیدا نمیکنه ؟؟؟
  پاسخ
تشکر شده توسط :
#6
mysqli فعال نيست
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان