PDA

View Full Version : كار با كلاسها !!



morteza_naderloo
شنبه 17 دی 1390, 14:33 عصر
سلام خسته نباشيد ميخواستم بدونم چجوري ميتونم يك سري كد php به كلاس و تابعه اي كه درونش تعريف كردم بدم .
به كدهاي پايين دقت كنيد !!؟
message.php


<?php
$title='آرشيو';
$content='message_view_db.php';
$myclass->block_view($title,$content);
?>


myclass.php


<?php
class block {
var $title,$path_of_script;
function block_view($title,$path_of_script){
$this->title=$title;
$this->content=$path_of_script;
echo "<div class='menu-title-center' >&nbsp;$this->title</div>";
echo "<div class='menu-title-center-body' >";
include "$this->content";
echo "<div style='clear:both;'></div>";
echo "</div>";
}
}
$myclass=new block;
?>


message_view_db.php


<?php
connect('root','','db');
$querymessage="SELECT * FROM message ORDER BY id DESC";
$resultmessage=mysql_query($querymessage);
while ($message=mysql_fetch_array($resultmessage,MYSQL_A SSOC)){
if ($message[read_active]=='1'){
$active_key='خوانده شده';
}else {
$active_key='خوانده نشده';
}
echo "

<div style='border:1px solid green;padding:5px;margin-bottom:10px;height:30px;' class='abmhover'>
<div class='abmshow' style='width:126px;height:20px;'>$message[user]</div>
<div class='abmshow' style='width:340px;height:20px;'>$message[title]</div>
<div class='abmshow' style='width:80px;height:20px;'><a href='?det=1&id=$message[id]'>مشاهده پیام</a></div>
<div class='abmshow' style='width:100px;height:20px;text-align:center;'>$active_key</div>
<div class='abmshow' style='width:20px;height:20px;'><a href='?messagee2=1&user=$message[user]' ><img src='../images/message.png' alt='ویرایش' style='width:20px;height:20px;' ></a></div>
<div class='abmshow' style='width:20px;height:20px;'><a href='?delet=1&id=$message[id]' ><img src='../images/delet.png' alt='حذف' ></a></div>
<div style='clear:both;'></div>
</div>";
}
?>


من در صفحه message.php يك كلاس فراخوني كردم ميخوام بهش كداي php بدم ؟! بايد چيكار كنم ؟
من از include استفاده كردم اما انگار صفحه اي كه اينكلود ميشه كدهاي ديگه در جاي ديگه رو فراخوني نميكنه ؟!!
مثلا


include 'head.php';

morteza_naderloo
شنبه 17 دی 1390, 21:36 عصر
دوستان كسي نميتونه كمك كنه ؟!

morteza_naderloo
یک شنبه 18 دی 1390, 18:51 عصر
از مديريان عزيز كسي نيست بتونه يك راه بهتر به من پيشنهاد بده ؟!!! يا اينكه اصلا به اين روش ميگن چي ؟‌MVC ???

mtchabok
دوشنبه 19 دی 1390, 10:51 صبح
سلام
برای include کردن یک فایل سعی کنید یه مسیر پایه داشته باشید و تمامی فایلهاتون رو نسبت به اون مسیر آدرس بدین .

<?php
define('ROOT', dirname(__FILE__));

include ROOT . '/file.php';
include ROOT . '/folder/file.php';
include ROOT . '/folder/../file1.php';


اگه با تکنیک mvc می خواید که برنامه نویسی بکنید این شیوه ای که گفتم باز مشکل داره و باید به گونه ای دیگه include رو انجام بدید ( البته روش include در mvc کاملا به نحوه استفاده شما از این تکنیک هس )

اما کدهاتون ظاهرا مشکلی ندارن و اگه فقط مشکلتون با include هس میتونید با استفاده از روشی که گفتم مشکلتون رو حل کنین .
اگه جوابی که می خواستید توی پاسخم نبود کمی بیشتر توضیح بدین که بتونیم کمکتون کنیم .

irGeek
دوشنبه 19 دی 1390, 12:12 عصر
میشه بفرمایید خط 9 کلاس myclass.php دارین چیکار میکنین؟!

include "$this->content";
منظورم اینکه وقتی شما می خاین یک متن رو نشون بدین چرا ی اسکریپت دیگه رو include می کنین.
راحت به جای ادرس اسکریپت محتوایی که از پایگاه می خونین بدین بهش!

كسي نيست بتونه يك راه بهتر به من پيشنهاد بده ؟!!! يا اينكه اصلا به اين روش ميگن چي ؟‌MVC ???
این کار شما ‌MVC نیست چون هنوز نتونستین با منطق‌MVC کنار بیاین و کد های ماژولتون رو با یوزر اینترفیس قاطی کردین. این مدل اسم خاصی نداره دوست داشتین خودتون برای این شیوه اسم انتخاب کنید.
ساختن یک کلاس بعداز تعریفش در ‌MVC نمی گنجه عزیز(به کد myclass.php نگاه کنید)
mtchabok عزیز وقتی ادرس می دی به جای / از ثابت DIRECTORY_SEPARATOR استفاده کن تا وقتی سیستم عامل سرورت عوض شد اذیتت نکنه!
include ROOT . DIRECTORY_SEPARATOR.'file.php';

mtchabok
دوشنبه 19 دی 1390, 18:35 عصر
mtchabok عزیز وقتی ادرس می دی به جای / از ثابت DIRECTORY_SEPARATOR استفاده کن تا وقتی سیستم عامل سرورت عوض شد اذیتت نکنه!
عزیزم / با ثابتش هیچ فرقی باهم در include نداره . زمانی این ثابت رو باید استفاده کرد که می خوایم یه مسیر رو مقایسه کرد و یا می خوایم که در جایی ثبت کنیم . در اون زمان هس که باید طبق اصول سرور عمل کرد تا مشکلی در مقایسه ها نداشته باشه .

morteza_naderloo
دوشنبه 19 دی 1390, 19:12 عصر
سلام .
واقعا ممنون که وقت با ارزشتون رو برای بنده گذاشتین خیلی خوشحالم و تشکر میکنم هم از این سایت (مدیران عزیزش) هم از شما دوستان .
متوجه شدم همراه کلاس و توابع باید متغییره ها هم براش ارسال کنم.
اما به نظرتون برای حرفه ای کد زدن باید چیکار کنم !! خوب الان خودم فهمیدم ( تمرین ، و بررسی کدها و اسکریپتها ، و اشتراک گذاری کد و ......)
برای اینکه بتونم MVC رو درست رعایت کنم باید چیکار کنم ؟

mtchabok
دوشنبه 19 دی 1390, 19:41 عصر
برای اینکه بتونم MVC رو درست رعایت کنم باید چیکار کنم ؟
بهترین روش یادگرفتن اینه که یکی از فریمورکها رو شروع کنین ( البته اونهایی که از تکنیک mvc پشتیبانی میکنن ) .
و اما اگه می خواید که خودتون یاد بگیرین و پیاده سازی کنین بهتره یه سرچی در همین تاپیکها بکنین چونکه یادمه قبلا بحثش شده بود ولی یه توضیح کوتاهی میدم .
m در mvc همون model هس که کارش ارتباط با پایگاه داده و یا به گونه ای مدلسازی کردن اطلاعات هس به طور مثال وقتی می خوایم که یه رکورد از جدول دانشجوها داشته باشیم می تونیم با استفاده از مدلسازی کردن یک دانشجو این کار رو انجام بدیم به این صورت که این کلاس مدل شامل یک شماره دانشجو ، یک نام و نام خانوادگی ، یک آدرس ، یک رشته و ... هست و ما زمانیکه نیاز به دانشجو با شماره دانشجویی 123 داشتیم فقط کافیه که مدل رو با این شماره دانشجویی فراخوانی کنیم ( البته روشهای فراخوانی متفاوته ) .
v در mvc هم view گفته میشه و برای نمایش اطلاعات هس . یعنی هر چیزی که می خواید برای کاربر ارسال بشه رو در فایلی با این عنوان قرار میدیم.
c در mvc به عنوان controller نقش ایفا میکنه و منظور اینه که کار پردازش درخواست و آماده سازی اطلاعات رو داره که به صورت یه کلاس و یا یه فایل ایجاد میکنیم . آماده سازی اطلاعات رو برای نمایش انجام میده و این اطلاعات رو در اختیار بخش view میزاره . در c اگه لازم بود با model ارتباط برقرار میشه .

به طور کلی زمانیکه در خواستی داده شد ابتدا c و سپس اگه نیاز بود m ( مدل در درون کنترل اجرا میشود ) و در انتها v اجرا میشوند .