برای آدرس دهی مجازی کدوم راه بهتره؟

masima

Member
سلام
من برای آدرس دهی به یه جای خاص سوال دارم :
اگه قرار باشه پوشه یه جای دیگه باشه ، درست همینه که با (/../..) مبدا پوشه رو مشخص کنیم یا جور دیگه ای هم میشه این کار رو کرد به عنوان مثال با $_server و یه سری تغییرات تو نتیجش؟

منظورم هم از نظر حرفه ای بودن و هم امنیته و ...؟ و یا اینکه به نظرتون این کارا اضافست و اینا ...

اگه کسی میتونه کمک کنه ، دریغ نکنه
با سپاس
 

Domanjiri

Well-Known Member
سلام

ببین منظورت آدرس دهی برای include کردن هست؟ (من اینطور فهمیدم) اگه منظورت چیز دیگه ای بود هم هیچ ایرادی نداره!

برای آدرس دهی موقع Include کردن:

اگه که OO (شی گرا) برنامه نویسی می کنید، بهترین روش، روش فوق العاده جذاب Autoloading هست که اکثر فریم ورک ها هم از این روش استفاده می کنن (http://php.net/manual/en/language.oop5.autoload.php

اگه هم که شی گرا برنامه نمی نویسید، استفاده از
PHP:
dirname(__FILE__)
پیشنهاد میشه، چون با خیال راحت می تونید مطمئن باشید که برنامتون همه جا و روی هر سیستم عاملی اجرا میشه. تو PHP نسخه .5.3 به بالا __DIR__ هم قابل استفاده هست( فرقی با بالاییه نداره!)

اگر هم تو برنامه ای که نوشتین، فایل راه انداز (Bootstrap ) دارید می تونید مثلن اینکار رو انجام بدید
PHP:
define('APP_ROOT', dirname(__FILE__));

بعد داخل بقیه فایل ها خیلی راحت با استفاده از این Const آدرس های شناور بساز..

یه نکته باریک تر از مو(!) : ویندوز هم « / » و هم « \ » رو میشناسه ولی __یکس فقط « / » رو می فهمه،
نتیجه: همیشه از / استفاده کنید.

شاد و موفق باشید
 

masima

Member
وای مرسی خیلی خوب بود
ببین منظورت آدرس دهی برای include کردن هست؟ (من اینطور فهمیدم) اگه منظورت چیز دیگه ای بود هم هیچ ایرادی نداره!
هم آره هم نه! - مثلن چی؟

اگه که OO (شی گرا) برنامه نویسی می کنید، بهترین روش، روش فوق العاده جذاب Autoloading هست
ازش چیز زیادی نفهمیدم، اگه میشه بیشتر توضیح بدین وگرنه که هیچی بیخیال oop میشم!

این که آدرس حقیقی میده ، تازشم فقط اسم ریشه رو میده نه فایل ، برای چی کاربرد داره؟؟ !!

اگر هم تو برنامه ای که نوشتین، فایل راه انداز (Bootstrap ) دارید می تونید مثلن اینکار رو انجام بدید
کد PHP:
define('APP_ROOT', dirname(__FILE__));

بعد داخل بقیه فایل ها خیلی راحت با استفاده از این Const آدرس های شناور بساز..
آره میخوام با راه انداز باشه ولی کامل آشنایی ندارم (دارم آسه آُسه پیش میرم !)

خوب یعنی باید با این دستور چی کا کنم؟ تا پیش از این من همه آدرس هامو به صورت ثابت تعریف میکردم و با دادن مسیر مشخص !
به نظرت این خیلی بده؟!
البته یه تابع تعریف کردم که میشه هر دایرکتوری با هر تعداد زیر شاخه رو به صورت خودکار ایجاد کنم و در اون باید نام همین متغیر های ثابت رو به صورت آرگومان بفرستم؟
این روش به نظرت به درد بخوره ؟
بعد داخل بقیه فایل ها خیلی راحت با استفاده از این Const آدرس های شناور بساز
چه جوری خیلی راحته ! هنوز واسم سخته که ! :)
 

Domanjiri

Well-Known Member
خب گلم بیا بگو منظورت چیه دیگه!
ازش چیز زیادی نفهمیدم، اگه میشه بیشتر توضیح بدین وگرنه که هیچی بیخیال oop میشم!
کم توضیح میدم که برید دنبالش، تو این روش اسم کلاس ها به نوعی آدرس اونا هم هست(!) مثلا کلاس Library_File_Trans در داخل فایل Library/File/Trans.php قرار داره، حالا وقتی یه جایی توی برنامه از این کلاس یه جوری استفاده بشه، فایلش خود به خود Include از نوع Once میشه (!):green: و ...
این که آدرس حقیقی میده ، تازشم فقط اسم ریشه رو میده نه فایل ، برای چی کاربرد داره؟؟ !!
مثلن داخل دایرکتوری اصلی دو تا دایرکتوری به اسم های A و B داریم، می خوایم یه فایل از B رو توی یه فایل از A آدرس بدیم:
PHP:
dirname( dirname(__FILE__)  ).'/B/xx.inc'
این به جای استفاده از ../../ و موارد ناموزون دیگه هست! و همونطور که گفتم در همه محیط ها به خوبی کار می کنه.
PHP:
خوب یعنی باید با این دستور چی کا کنم؟
استفاده از راه انداز (چه اسمی!) یعنی همه درخواست ها به یک فایل فرستاده میشن و اون فایل وظیفه به کارگیری کدها و پاسخ دادن به درخواست رو داره، این یعنی اینکه اگه یه Cost توی فایل راه انداز تعریف بشه، همه جا قابل استفاده هست. در نتیجه توی برنامه فقط به رابطه دایرکتوری مورد نظر با دایرکتوری اصلی(همونی که راه انداز توش هست) نیاز داریم...
..و در اون باید نام همین متغیر های ثابت رو به ..
:green:

من الان که دوباره سوال رو خوندم فهمیدم که به احتمال 80 درصد درکش نکردم :( بیا و ما رو از این برزخ برهان!!

شاد باشی.
 
آخرین ویرایش:

masima

Member
خیلی خوب توضیح میدی ، دمت گرم.
مثلن داخل دایرکتوری اصلی دو تا دایرکتوری به اسم های a و b داریم، می خوایم یه فایل از b رو توی یه فایل از a آدرس بدیم:
کد php:
Dirname( dirname(__file__) ).'/b/xx.inc'
این به جای استفاده از ../../ و موارد ناموزون دیگه هست! و همونطور که گفتم در همه محیط ها به خوبی کار می کنه.مثلن داخل دایرکتوری اصلی دو تا دایرکتوری به اسم های a و b داریم، می خوایم یه فایل از b رو توی یه فایل از a آدرس بدیم:
کد php:
Dirname( dirname(__file__) ).'/b/xx.inc'
این به جای استفاده از ../../ و موارد ناموزون دیگه هست! و همونطور که گفتم در همه محیط ها به خوبی کار می کنه.
این کاملا به دردم میخوره.
من الان که دوباره سوال رو خوندم فهمیدم که به احتمال 80 درصد درکش نکردم :( بیا و ما رو از این برزخ برهان!!
نه ، دارید درست میگید. منم تا دیروز فکر میکردم زیاد ربطی به سوالم نداشتش!! ولی حالا چرا ربط داره. :)

در مورد راه انداز هم کمی آشنا شدم ولی برای توضیح بیشتر فکر کنم بهتره یه پست جدا بزنم، میای توضیح بدی ؟بعدا
و همینطور در مورد کار با کلاس اتولودینگ :)
 

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

بالا