2010-11-11 17 views
21

मैं वेबसाइटों को PHP नेमस्पेस का उपयोग करने पर एक संभाल करने की कोशिश करने के लिए खोज रहा हूं, लेकिन वे सभी अस्पष्ट लगते हैं लेकिन वे क्या करने की कोशिश कर रहे हैं समझने में आसान है!PHP नेमस्पेस का उपयोग

मेरा प्रश्न है: मेरे पास people.php नामक एक फ़ाइल है और इसमें people नामक परिभाषित कक्षा है। यदि मैं एक ही फ़ोल्डर में managers.php नामक एक और फ़ाइल बना सकता हूं, तो मैं people नामक एक क्लास को फिर से परिभाषित कर सकता हूं जो मूल people वर्ग को बढ़ाता है लेकिन managers के नामस्थान में, यदि ऐसा है तो मुझे मूल people.php 'शामिल करना होगा और यदि ऐसा है तो मैंने लेखन के बाद शामिल हैं: namespace managers?

+3

एक बात का ध्यान रखें कि PHP में नामस्थान अपने निर्देशिका संरचना को प्रतिबिंबित नहीं करता लेने के लिए। आपको अपने नेमस्पेस नामों के साथ अपनी निर्देशिका संरचना मैन्युअल रूप से मैप करना होगा। – Extrakun

+0

[यह] (http://www.sitepoint.com/php-53-namespaces-basics/) PHP नामस्थानों के बारे में जानने के लिए आवश्यक सब कुछ साफ़ करने के लिए एक महान संसाधन होगा। –

उत्तर

4
// people.php 
<?php 
namespace People; 

class People {} 


// managers.php 
<?php 
namespace Managers; 

require_once __DIR__.'/people.php'; 

class People extends \People\People {} 
31

नेमस्पेस पैकेज में आपके संबंधित वर्गों को समूहबद्ध करने का एक तरीका है। क्या आप का वर्णन सबसे अच्छा

<?php // people.php 
namespace com\example\johnslibrary\people; 
abstract class People { 

} 

और फिर

<?php // manager.php 
namespace com\example\johnslibrary\people; 
require_once 'path/to/People.php'; // can better use autoloading though 
class Manager extends People { 

} 

की तरह एक भी नाम स्थान में रखा जा सकता है क्योंकि एक प्रबंधक लोगों का एक उपवर्ग है, इसलिए वहाँ एक कारण के ज्यादा उन्हें में डाल करने के लिए नहीं है उनके अपना नामस्थान वे विशेष लोग हैं।

यदि आप प्रबंधकों को अपने नामस्थान में होना चाहते हैं, तो आप ऐसा कर सकते हैं, लेकिन extends कीवर्ड का उपयोग करते समय पूरी तरह से योग्य नाम का उपयोग करना होगा, उदा।

<?php // manager.php 
namespace com\example\johnslibrary\managers; 
require_once 'path/to/People.php'; 
class Manager extends \com\example\johnslibrary\people\People { 

} 

या आयात लोग वर्ग पहले

<?php // manager.php 
namespace com\example\johnslibrary\managers; 
use com\example\johnslibrary\People as People; 
require_once 'path/to/People.php'; 
class Manager extends People { 

} 

See the PHP Manual on Namespaces for extensive documentation.

0

मैं पुराने पीएचपी क्लास है और मैं उदाहरण के लिए के रूप में नई PHP फ़ाइल में इसका इस्तेमाल करने की जरूरत है: index.phpiClass.php उपयोग करने के लिए है। लेकिन OLD iClass.php का उपयोग करने से पहले मुझे इसे नीचे संशोधित करना होगा, ताकि मैं इसे index.php में उपयोग कर सकूं।

iClass.php:

namespace ic; 
class iClass { 
    public static function callMeFromClass() { 
    echo 'OK - you have called me!'; 
    exit; 
    } 
} 

index.php

namespace inex; 
require_once 'iClass.php'; 
use ic\iClass; 
iClass::callMeFromClass(); 
संबंधित मुद्दे