Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > ใครช่วยอธิบายเรื่องการใช้ namespace ใน PHP หน่อยครับ ไม่ค่อยเข้าใจเลยครับ



 

ใครช่วยอธิบายเรื่องการใช้ namespace ใน PHP หน่อยครับ ไม่ค่อยเข้าใจเลยครับ

 



Topic : 114027



โพสกระทู้ ( 183 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook



ใครช่วยอธิบายเรื่องการใช้ namespace ใน PHP หน่อยครับ ไม่ค่อยเข้าใจเลยครับ



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-01-27 10:14:47 By : melodyApinan View : 7593 Reply : 11
 

 

No. 1



โพสกระทู้ ( 2,258 )
บทความ ( 5 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook Hi5 Blogger

ลองอ่านบทความของคุณ taqman ดูครับ

php-namespace-คืออะไร-จะทำให้ชีวิตเราดีขึ้นได้อย่างไร






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-01-27 10:42:04 By : Manussawin
 


 

No. 2



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

น่าจะเหมือนในภาษา .NET ครับ ใช้จัดกลุ่มพวก class ครับ เช่น ถ้าต้องการสร้าง class ให้อยู่ในกลุ่มของ การจัดการ user ก็อาจจะสร้าง namespace ว่า user แล้วสร้าง class ใน user อีกที

Code
<?php namespace user; class ManageUser { function AddUser(){ } function DeleteUser(){ } } ?>


เรียกใช้ก็จะเรียกตาม namespace -> class -> function/method

ซึ่งจะป้องกันเมื่อ Project มี Class และ Function ที่เหมือน ๆ กัน ก็จะสามารถแยกได้ด้วย NameSpace รวมทั้งใช้จัด Group ของ Class และ Function ได้อีกด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-01-27 10:49:17 By : mr.win
 

 

No. 3



โพสกระทู้ ( 889 )
บทความ ( 11 )



สถานะออฟไลน์
Facebook Blogger

ตอบความคิดเห็นที่ : 2 เขียนโดย : mr.win เมื่อวันที่ 2015-01-27 10:49:17
รายละเอียดของการตอบ ::
เป็นคำแนะนำที่สรุปได้ ดีมากๆครับเลยครับพี่เห็นภาพเลย

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-01-27 11:38:26 By : geidtiphong
 


 

No. 4



โพสกระทู้ ( 183 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ขอบคุณมากครับ ผมนี่จินตามเลย สุดยอด ว่าแต่ถ้าสมมุติ ผมต้องการให้เรียก path โดยไม่ต้องเริ่มจาก c:/ เนี้ย เช่นจะเรียกแค่จาก
ีuse \myscript\myclass\classname;

เรียกแบบนี้จะได้ไหมแล้วมีปัญหาอะไรแก้ยังไงครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-01-27 14:08:06 By : melodyApinan
 


 

No. 5



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

http://php.net/manual/en/language.namespaces.php
อ่านตรงนี้ครับ โดยหลักการไม่มีอะไรมาก encapsulation คล้ายกับการเขียนคลาสเมธอด แต่เพิ่มขึ้นมาเหนือกว่าอีกระดับ
ใช้จัดการงานประเภท โมดูล หรือระบบที่มีไฟล์มากมายหลายชั่น ผสมกับ autoload จะไม่ต้องมา include ไฟล์เอง ช่วยลดการสับสนหากชื่อไฟล์ ชื่อคลาสเดียวกัน แต่คนละโมดูล


ประวัติการแก้ไข
2015-01-27 19:44:34
2015-01-28 08:44:46
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-01-27 19:43:51 By : pjgunner.com
 


 

No. 6



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

Ex.

abc.php
namespace abc;

function substr($str, $start, $end){
    $start -= 1;
    $length = $end - $start;
    return \substr($str, $start, $length);
}

function println($str = ''){
    echo $str.'<br />';
}


test_namespace.php
require_once 'abc.php';
use abc as myfunc;

$str = "Hello's girl.";
echo myfunc\substr($str, 9, 12);
abc\println();
echo \abc\substr($str, 1, 5);
myfunc\println();
echo substr($str, 1, 5);


Result
girl
Hello
ello'



ประวัติการแก้ไข
2015-01-27 20:26:05
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-01-27 20:16:25 By : pjgunner.com
 


 

No. 7



โพสกระทู้ ( 183 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

แล้วกรณีที่ใช้ร่วมกับ autoload และ class อยู่ในคนละโฟลเดอร์กับไฟล์ที่เรียกใช้ class จะทำอย่างไรของตัวอย่างหน่อยครับ
ตัวอย่างโครงสร้างไฟล์

[root]
|-lib
| |--ClassA.php
| |--ClassB.php
| |--ClassC.php
|-www
| |-index.php
| |-bootstrap.php
| |-autoload.php

การทำงานคือ ให้ไฟล์ bootstrap.php เรียกใช้ class ใน lib โดยอัตโนมัติ โดยใช้ autoload.php เป็นฟังก์ชั่นสำหรับ include ไฟล์อัตโนมัติ
และใช้ namspace เรียกใช้แต่ละ class เพื่อป้องกันชื่อ class ซ้ำกัน

autoload.php
function __autoload($class_name) {
    require_once '../lib/' . $class_name . '.php';
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-01-28 15:48:29 By : melodyApinan
 


 

No. 8



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

Code (PHP)
function __autoload($class_name) {
    $class_name = str_replace('\\', '/', $class_name);
    
    require_once '../lib/' . $class_name . '.php';
}



http://www.pjgunner.com


ประวัติการแก้ไข
2015-01-28 17:34:59
2015-01-28 17:35:15
2015-01-28 18:17:15
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-01-28 17:08:29 By : pjgunner.com
 


 

No. 9



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

จริงๆ ควรใช้ตัวนี้ดีกว่า spl_autoload_register()
มันสามารถเรียงตามลำดับการโหลดได้หากหาไม่พบ จะเรียกตัวอื่นถ้าคุณใช้โมดูล ของเขาเขาก็อาจมี auto load ของตัวเอง เช่นกัน


อย่างคำถาม นี้ ก็ควรเก็บค่า Root ไว้ จะได้ root ของเว็บเรา ใช้ง่ายกว่า เพราะไม่ต้องไปสนใจว่าตอนนี้เรียกจากไหน
เช่น
require_once $root_dir. '/' . $class_name . '.php';


จาก
|-lib
| |--ClassA.php
| |--ClassB.php
| |--ClassC.php
|-www
| |-index.php
| |-bootstrap.php
| |-autoload.php
| |-abc
| | |-aaa.php

ถ้าทำแบบ ../ จะหาไม่เจอ ยกเว้นวิธีที่บอกไป
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-01-28 17:46:11 By : pjgunner.com
 


 

No. 10



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

Example

index.php ทุกรีเควสจะเข้ามาที่นี่ ถ้า โครงสร้าง เป็นแบบ No.7
define('ROOT_PATH', realpath(__DIR__.'/..'));

spl_autoload_register(function ($class){
    $file = ROOT_PATH.'/'.str_replace('\\', '/', $class).'.php';

    if (file_exists($file)){
        require_once $file;
        return  true;
    }
    
    return false;
});

require_once 'bootstrap.php';


ClassB.php
namespace lib;
class ClassB{
    public function __construct(){
        echo 'B construced namespace: '.__namespace__;
    }
}


bootstrap.php
new \lib\ClassB();



ประวัติการแก้ไข
2015-01-28 18:31:18
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-01-28 18:28:04 By : pjgunner.com
 


 

No. 11



โพสกระทู้ ( 183 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

Get เลย
thk
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-01-28 22:20:26 By : melodyApinan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ใครช่วยอธิบายเรื่องการใช้ namespace ใน PHP หน่อยครับ ไม่ค่อยเข้าใจเลยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่