PDA

View Full Version : ایجاد پی در پی یک شی در صفحات



majid1605
جمعه 26 اردیبهشت 1393, 21:56 عصر
چندین کلاس مختلف دارم که برای کارهای مختلف نوشته شدن ولی الان یه مشکلی در مورد ایجاد شی در صفحات دارم


include 'menu.php';
include 'content.php';
include 'footer.php';

تقریبا تمام قسمتهای سایت به صورت پارتهای جدا مثل مثال بالا ایجاد میشن بعضا تووی یک صفحه ممکنه چندین فایل مختلف اینکلود بشن اما این فایلها خودشون دسترسیهای مختلف و کار با پایگاه داده و.....
وقتی یک شی از یک کلاس (سشن) در فایل menu ایجاد می کنم و تووی فایل content هم باید همون شی ایجاد بشه یا شی قبلی کافیه؟
میخوام بدونم تووی php فایلها ابتدا پردازش میشن و نتیجه اینکلود میشه یا فایل ها با هم یکی میشن و بعد پردازش انجام و نتیجه ارسال میشه

masiha68
شنبه 27 اردیبهشت 1393, 10:23 صبح
همون شی قبلی کافیه
پردازش در پی اچ پی به صورت خط به خطه
یعنی وقتی دستور اینکلود رو میبینه اینکلود رو انجام میده وقتی صفحه اینکلود شد حالا کدهای اون صفحه رو تفسیر می کنه

majid1605
یک شنبه 28 اردیبهشت 1393, 12:31 عصر
ولی اینجوری یکم کار سخت میشه چون یک سری کلاس ممکنه تووی یک فایل به صورتی باشه که با فرض صحیح بودن یک شرط ایجاد و تووی صفحه دیگه ببا اجرای یک شرط دیگه
حالا لگه هردو شرط همزمان اجرا بشن چی؟ یه مقدار برنامه نویس باید تووی مدیریت اشیا و صفحه دقت بیشتری به خرج بده

در مورد خود کلاسها وقتی یک کلاس دسترسی داشته باشیم و تووی اون کلاس هم کلاس دیتابیس هم سشن اینکلود شده باشن وقتی از کلاس دسترسی یک شی ایجاد می کنیم و اگه نیاز به اون دوتا کلاس دیگه باشه باید اون دوتا دوباره اینکلود بشن ؟

masiha68
دوشنبه 29 اردیبهشت 1393, 10:32 صبح
ولی اینجوری یکم کار سخت میشه چون یک سری کلاس ممکنه تووی یک فایل به صورتی باشه که با فرض صحیح بودن یک شرط ایجاد و تووی صفحه دیگه ببا اجرای یک شرط دیگه
حالا لگه هردو شرط همزمان اجرا بشن چی؟ یه مقدار برنامه نویس باید تووی مدیریت اشیا و صفحه دقت بیشتری به خرج بده

در مورد خود کلاسها وقتی یک کلاس دسترسی داشته باشیم و تووی اون کلاس هم کلاس دیتابیس هم سشن اینکلود شده باشن وقتی از کلاس دسترسی یک شی ایجاد می کنیم و اگه نیاز به اون دوتا کلاس دیگه باشه باید اون دوتا دوباره اینکلود بشن ؟
بستگی داره
یکی اینکه اون کلاس رو بهخ چه صورت به کلاس مورد نظرت متصل کردی ... حالت ارث بری که اگه اینجور باشه لزومی به ایجاد شی از کلاس پدر نیست و کلا با ایجاد شی از کلاس فرزند م می تونی به متد و پروپرتی های _پابلیک _ کلاس پدر هم دسترسی داشته باشی و اگه توی کلاس مورد نظرت فقط نیو کرده باشی و از کلاس شی ایجاد کرده باشی نه نمیشه و باید از اون کلاس هم یه شی ایجاد کنی و طبیعتا باید اینکلودش کنی .... و در صورتی که توی کلاس نیو کرده باشی و اون نیو رو به پروپرتی ارجاد داده باشی بازم لازم نیست اون کلاس نیو بشه فقط کافیه به اون پروپرتی اشاره کنی و بعد از متد های اون کلاس استفاده کنی
اگه نتونستی درک کنی بگ تا برات مثال با کد بزنم

majid1605
چهارشنبه 31 اردیبهشت 1393, 10:41 صبح
ممنون
قسمت دوم رو متوجه نشدم ممنون میشم مثال بزنی ولی قضیه ارثبری رو مشکلی ندارم.
فقط یک سوال دیگه
بر فرض یک کلاس دیتابیس داریم این کلاس تووی خیلی کلاس های دیگه استفاده میشه مثلا کلاس کاربران یا کلاس ذخیره سشن در دیتابیس و.... حالا کدوم راه رو انتخاب کنم که از کلاس دیتابیس تووی این کلاسها استفاده کنم روش اینکلود و new یا ارثبری و ......

masiha68
چهارشنبه 31 اردیبهشت 1393, 11:16 صبح
بهترین حالت همون ارثبری هست ولی خب وقتی دوتا کلاس داری نمیشه از این حالت استفاده کردم ... من خودم یه کلاس بیس دارم وبقیه از اون ارث بری می کنن ( البته در حالت شی گرایی و توی ام وی سی قضیه فرق میکنه )


class a extends base {
}
class a{ function pop() { include_once 'base.class.php'; $cls=new base(); $cls->del_to_trash(21); }}class a{ public $cls; function __construct() { include_once 'base.class.php'; $this->cls=new base(); } function pop() { $this->cls->del_to_trash(21); }}
اینم تموم حالتهایی که ممکنه پیش بیاد .... و بهترن حالت هم همون ارث بری هستش که با $this می تونی به هر کدوم از متد ها و پرورپرتی های کلاس پدر درسترسی داشته باشی ( البته می تونی از parent::method هم استفاده کنی)