استفاده صحیح از oop

X7337X

Member
سلام

من تمام class هایی که لازم دارم رو نوشتم

حالا میخوام بدونم روش صحیح به چه شکله؟ یعنی اگه بخوام تو 1 صفحه از 3 تا کلاس استفاده کنم یاید به صورت زیر انجام بدم؟

PHP:
<?php

include "class1"
include "class2"
include "class1"

$class1 = new class1($config);

$class2 = new class2($option);

$class3 = new class3($name);



echo $class1->make($system);

echo $class2->make($var);

echo $class3->make($conn);
?>

یا اینکه برای هر کلاس یه function جدا بنویسم؟
و هر کدوم رو با استفاده از function وارد کنم؟

شما کدوم رو پیشنهاد میکنید؟
اگه راه بهتری هست بفرمایید.
 

yakoza

Well-Known Member
آره ديگه روش معمولش همينه كه نوشتي

منظورتو از function جدا بنويسيم نفهميدم ميشه بيشتر توضيح بدي

البته يه روش ديگه هم هست كه شما رو از اينكلود كردن راحت ميكنه كه تو php5 قابل استفادست

__autoload
 

X7337X

Member
منظورم اینه که یه کلاس برای همش تعریف کنم بعد از فانکشناش استفاده کنم
به این صورت

PHP:
<?php
class start
{
    function class1()
    {
        include(class1);
        $class1 = new class1();
    }
    function class2()
    {
        include(class2);
        $class2 = new class2();
    }

    ....
    .......
}
?>
 

yakoza

Well-Known Member
نه به نظرم درست نمياد
اينجوري هر كلاسي كه اضافه بشه بايد به كلاس start هم يه متد اضافه كني ؟ نه فكر نكنم خوب باشه

شما اون لينكي رو كه دادم نگاه بنداز خوبه
 

X7337X

Member
هر بار که یه کلاس تعریف شه باید اضاف کنم

تشکر از روش autoload هم میشه به راحتی استفاده برد
 

yakoza

Well-Known Member
نه منظورم اين بود كه يه كلاس جديد به كل سيستم اضافه بشه شما هم بايد يه متد به اين كلاس start اضافه كني ديگه
 

yakoza

Well-Known Member
مثلا تو دو تا كلاس نوشتي
خوب ؟

حتما بايد بيايي اينو بنويسي ديگه

PHP:
 <?php
class start
{
    function class1()
    {
        include(class1);
        $class1 = new class1();
    }
    function class2()
    {
        include(class2);
        $class2 = new class2();
    }
   
}
?>

حالا اومديم خواستي سيستم رو توسعه بدي و كلاسهاي جديدتري هم بايد به سيستم اضافه بشن ديگه

اونوقت بايد بيايي يگي
PHP:
 <?php
class start
{
    function class1()
    {
        include(class1);
        $class1 = new class1();
    }
    function class2()
    {
        include(class2);
        $class2 = new class2();
    }
    
    function class3()
    {
        include(class3);
        $class2 = new class3();
    }
}

...............
class4
...............
class5

?>

درسته
 

Sub.Zero

Member
میگم یاکوزا جان نمیشه از وراثت استفاده کرد ؟
یکی رو پدر و یکی رو به فرزندی بنویسیم ؟
 

X7337X

Member
yakoza جان تشکر میکنم

همون استفاده از autoload به نظرم بهتر میاد

لطف کردی عزیزم
 

X7337X

Member
من از autoload به صورت زیر استفاده کردم
واسم عجیب اومد چون تاحالا فایل رو با function به این صورت قرار ندادم
یه لطفی کن ببین مشکلی نداره

For Ex:
PHP:
<?php
function __autoload($class){
    require_once("/class/class.".$class.".php");
    if(method_exists($class,'__construct')){
        eval("class al_$class extends $class{function __construct(){parent::__construct();}}new al_$class;");
    }
    return true;
}

__autoload('class1');
__autoload('class2');
__autoload('class3');

$class1 = new class1($option);
$class2 = new class2($config);
$class3 = new class3($var);

echo $class1->main($start1);

echo $class2->main($start2);

echo $class3->main($start3);
?>

حالا این method_exists دقیقا چه کار میکنه؟
نیازه قرار بدم؟

بازم ممنونم
 

yakoza

Well-Known Member
نيازي نيست اينجوري استفاده كني

يه فايل درست كن به اسم load.php اينو توش بزار

PHP:
function __autoload($class)
{
    if(file_exists('class/'.$class))
    {
		require_once 'class/'.$class.'.php';
	}else
	{
		die ('class \$class not found');
	}
}

اينم ميشه فايل اصليت

PHP:
<?php


require_once 'load.php';

$class1 = new class1($option);
$class2 = new class2($config);
$class3 = new class3($var);

echo $class1->main($start1);

echo $class2->main($start2);

echo $class3->main($start3);


?>
 

yakoza

Well-Known Member
راستي يادم رفت اينو بگم دقت كن اسم كلاست با فايلش هم نام باشه يعني اگه اسم كلاست هست class1
اسم فايلش بايد باشه class1.php
 

MDP

Well-Known Member
سلام بچه ها.

من از php زیاد سر در نمیارم ، ولی میشه به من بگید oops چیه؟

oop رو می دونم ولی oops رو نمی دونم.

/

نکنه Oops منظورتونه که یعنی به فارسی : اوووه!:rose:
 

yakoza

Well-Known Member
همون oop منظورشه ولي اشتباه تايپي بوده

چند بار خواستم اديت كنم يادم رفته

ممنون ازت
 

جدیدترین ارسال ها

بالا