• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
چطوری include کنم؟
#1
سلام
بچه یه ساختار مثل زیر رو در نظر بگیرید

کد:
+ index.php
+ core/
    + classes/
        + class.DATABASE.php
+ config/
    + db_config.php

اطلاعات ثابت توی فایل db_config.php هستن. پس باید تو فایل class.DATABASE.php اونا رو include کنم.

db_config.php به شکل زیر
کد پی‌اچ‌پی:
<?php
    
class DB_CONFIG{
        protected 
$_host        'localhost';
        protected 
$_username    'root';
        protected 
$_password    '*******';
        protected 
$_database    'test';
    } 

کلاس DATABASE هم مثل زیرِ

کد پی‌اچ‌پی:
include '../../config/db_config.php';
class 
DATABASE extends DB_CONFIG{



تا اینجا وقتی توی خود فایل class.DATABASE.php یه آبجکت از خودش درست می کنم و استفاده می کنم مشکلی پیش نمیاد ولی وقتی میخوام از این کلاس تو فایل index.php یه نمونه درست کنم دیگه جواب نمیده و اررور میگیره Undecided

فایل index.php
کد پی‌اچ‌پی:
<?php
    
include 'core/classes/class.DATABASE.php';
    
$person = new DATABASE;
?>

ارورش از ایناس
کد:
Warning: include(../../config/db_config.php): failed to open stream: No such file or directory in C:\wamp\www\New MiM\core\classes\class.DATABASE.php on line 2
Warning: include(): Failed opening '../../config/db_config.php' for inclusion (include_path='.;C:\php\pear') in C:\wamp\www\New MiM\core\classes\class.DATABASE.php on line 2
Fatal error: Class 'DB_CONFIG' not found in C:\wamp\www\New MiM\core\classes\class.DATABASE.php on line 4
Confused
چرا همچین میشه؟ Dodgy
W H A T E V E R   Sleepy 
  پاسخ
تشکر شده توسط :
#2
اولاً اسم پوشه classes رو عوض کن بزار library - چون واقاً بی معنیه - اونجوری پس خود config هم کلاسه!

دوماً اسم class.DATABASE.php رو هم عوض کن بزار DATABASE.PHP - چون داخل پوشه classes هست خودش نیازی نیست(خواناتر هم میشه).

سوماً در همچین مواردی سعی کن آدرس های ثابت داشته باشی - نه اینکه دستی بزنی یا پویا بزاری(که بعداً به کثیف کاریو مشکلات برخورد کنی)
(مثلاً آدرس کتابخانه رو یه define کن، آدرس کانفیگها رو یه define و...)

چهارماً مشکلت بخاطر آدرس دهی relative هست که باید اون دو تا ../../ رو برداری - راه تمیزشم اون سوماً هست که گفتم.
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط : Reza masoudmanson
#3
با تشکر از یوشا به نظر من کلاس کانفیگ رو اینجوری بنویس و ازش ارث بری نکن
کد پی‌اچ‌پی:
class config{
    
    const 
db_host 'localhost';
    const 
db_user 'root';

}


class 
database{

    function 
__construct()
    {
    
        
$this->connect(config::db_host,config::db_user);
    }



کاملاً شی گرا تر تمیز و با کلاس .

بعدم توی کانفیگ به غیر از اطلاعات دیتابیس چیزهای دیگه هم قطعاً هست اینجوری شکیلتره .
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : masoudmanson Webprograming
#4
بنظرم شما (رضا و مسعود) درمورد کانفیگ دچار سوء تعبیرید!!!
  پاسخ
تشکر شده توسط : Reza masoudmanson
#5
نقل قول:بنظرم شما (رضا و مسعود) درمورد کانفیگ دچار سوء تعبیرید!!!
Huh
یه مثال گفتم دیگه .Dodgy
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط :
#6
آخه این نوع کانفیگ با زیاد با اصل کانفینگ هم خوانی نداره
  پاسخ
تشکر شده توسط :
#7
(۱۳۹۱ مرداد ۲۲, ۰۱:۰۱ ق.ظ)oia نوشته: آخه این نوع کانفیگ با زیاد با اصل کانفینگ هم خوانی نداره
حالا کار رضا (استفاده از ثابت ها ) باز بهتر!

منظورت اینه که لازم نیست کانفیگ کلاس باشه؟ Undecided
W H A T E V E R   Sleepy 
  پاسخ
تشکر شده توسط :
#8
نباید کلاس باشه. ممکنه که یک کلاس کانفیگی رو بخونه و بعد بصورت آبجکت در بیاره
اما در پیکربندی (config) باید ویرایش کردن رو مدنظر داشت.
ویرایش کردن یک کلاس به صورت یک فایل کانفیگ کار صحیحی نیست.
فایل config نوعی از ذخیره سازی داده هاست. کلاس که جای ذخیره کردن نیست.

در مورد کار رضا هم حرفم رو پس می گیرم. اونم اشتباست.
  پاسخ
تشکر شده توسط : masoudmanson
#9
نقل قول:فایل config نوعی از ذخیره سازی داده هاست. کلاس که جای ذخیره کردن نیست.
http://forum.iranphp.org/Thread-%D8%A2%D...%D8%B1-PHP
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط :
#10
چه ربطی داره؟! (از چه ربطی داره های وحید و یوشا/ ماهم چه ربطی دارهه یی شدیم رفت Big Grin)
گفته ENUM نه config!
کمی enum بخون : http://en.wikipedia.org/wiki/Enumerated_type

کاربرد ENUM جا هاییه که سیستم ورودی های یی که میگیره محدود به یه لیست هستند. (مثلآ ورودی ایام هفته)
حالا به جای اینکه اجازه بدیم که هر ورودی داده بشه و بعد ما معتبرسازیش کنیم.میام یه ENUM تعریف می کنیم و می گیم که ورودی از فلان ENUM باشه و ...
متاسفانه توی پی اچ پی ENUM پیاده سازی نشده. این کار (تعریف const در کلاس) نمی تونه جای enum رو پر کنه. اگرچه خیلی کمک می کنه.

تفاون های enum و config :
enum یه مجموعه/شکل از داده است. مثه int که که مجموعه اعداد مثبت و منفیه در یه بازه مشخص.
کد:
enum WeekDays{
    Sun = 0,
    Mon = 1,
    Tue = 2,
    Wed = 3,
    Thu = 4,
    Fri = 5,
    Sat = 6,
}

int getWeekDayNum(WeekDays weekDay)
{
    return (weekDay+1);
}

اما منظور از config یه فایل هست که اطلاعات توش ذخیره شده. اطلاعات هر لحضه قابل خوندن و ویرایش کردنه.
در Config ما یه یک مقدار طرفیم (نه یک مجموعه که یکی ازش رو انتخاب کنیم)
کد:
weekday = 1 ; weekday is Mon

--
قصدم این بود که در مورد config شفاف سازی کنم.
  پاسخ
تشکر شده توسط : Y.P.Y masoudmanson Reza


پرش به انجمن:


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