Tags:

เนื่องจาก ผมได้นำเอา lib ของคนอื่นมาใช้งานใน project แต่พอนำเข้ามาใช้งานปรากฏว่า error ดังนี้

lib project a
ไฟล์ที่ 1 C:/a/a/lib/LB/LPBBot.php

namespace LPB;

use LPB\LPBBot\db;

class LPBBot{
.
.
}

ไฟล์ที่ 2 C:/a/a/lib/LB/db/dbcon.php


namespace LPB\LPBBot\db;

use LPB\LPBBot\Constant\Meta;

class dbcon implements db{
.
.
}

file project a
c:/wwwroot/index.php

code index.php

require_once("C:/a/a/lib/LB/LPBBot.php");

$bot = new \LPB\LPBBot( new \LPB\LPBBot\db\dbcon($config));

ปรากฏว่า error ตรงนี้

$bot = new \LPB\LPBBot( new \LPB\LPBBot\db\dbcon($config));

Fatal error: Class 'LPB\LPBBot\db\dbcon' not found in c:/wwwroot/index.php on line 2

ทำไม่ไฟล์ถึงเรียกใช้งาน class dbcon ไม่ได้ครับ รบกวนแนะนำผมด้วยครับ

หมายเหตุ
webserver : IIS
php : 5.6

Get latest news from Blognone
By: soginal
AndroidIn Love
on 22 July 2017 - 13:35 #999088
soginal's picture

ไม่ได้ require dbcon.php รึเปล่าครับ
เห็นมีแต่ require LPBBot.php

By: khao_lek on 24 July 2017 - 09:26 #999226 Reply to:999088

ลองเพิ่มแล้วครับ ตัว dbcon.php ก็ไปerror ไฟล์อื่นต่อ คือ ถ้าต้อง include เข้ามาทุกไฟล์ก็แย่เหมือนกัน เพราะมีไฟล์ที่ใช้งานเป็น 20 ไฟล์เลยครับ
แต่ที่แปลกคือ ในไฟล์ LPBBot.php ก็มี use LPB\LPBBot\db; แล้ว มันไม่ auto load เข้ามาให้หรือครับ

By: soginal
AndroidIn Love
on 24 July 2017 - 17:40 #999365 Reply to:999226
soginal's picture

ก็ต้องดู code ก่อนครับว่าจำเป็นต้อง include ไหม
แต่ส่วนมากแล้วผมคิดว่าต้อง include นะครับเพราะ php มันไม่รู้หรอกว่า namespace นี้อยู่ในไฟล์ไหน

ถ้าเอาโค๊ดนี้มาจากคนอื่นที่เขาใช้งานได้ก็คงต้องไปดูโค๊ดของเขาเพิ่มว่าเขามีการทำพวก autoloading ไว้รึเปล่าครับ

By: khao_lek on 25 July 2017 - 15:40 #999553 Reply to:999365

ผมสามารถใช้ได้แล้วครับ คือ ในตัวอย่างเขา import lib เข้ามาจาก composer ครับ เขาถึงใช้งานได้ แต่ผมไม่ได้ทำแบบเขา มันเลยมีปัญหาครับ