เนื่องจาก ผมได้นำเอา 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
ไม่ได้ require dbcon.php รึเปล่าครับ
เห็นมีแต่ require LPBBot.php
ลองเพิ่มแล้วครับ ตัว dbcon.php ก็ไปerror ไฟล์อื่นต่อ คือ ถ้าต้อง include เข้ามาทุกไฟล์ก็แย่เหมือนกัน เพราะมีไฟล์ที่ใช้งานเป็น 20 ไฟล์เลยครับ
แต่ที่แปลกคือ ในไฟล์ LPBBot.php ก็มี use LPB\LPBBot\db; แล้ว มันไม่ auto load เข้ามาให้หรือครับ
ก็ต้องดู code ก่อนครับว่าจำเป็นต้อง include ไหม
แต่ส่วนมากแล้วผมคิดว่าต้อง include นะครับเพราะ php มันไม่รู้หรอกว่า namespace นี้อยู่ในไฟล์ไหน
ถ้าเอาโค๊ดนี้มาจากคนอื่นที่เขาใช้งานได้ก็คงต้องไปดูโค๊ดของเขาเพิ่มว่าเขามีการทำพวก autoloading ไว้รึเปล่าครับ
ผมสามารถใช้ได้แล้วครับ คือ ในตัวอย่างเขา import lib เข้ามาจาก composer ครับ เขาถึงใช้งานได้ แต่ผมไม่ได้ทำแบบเขา มันเลยมีปัญหาครับ