मैं विशिष्ट फ़ोल्डर में स्थित कस्टम कक्षाओं को लोड करने के लिए संगीतकार का उपयोग करने का प्रयास करता हूं।

यहाँ मेरी परियोजना संरचना है

public
|—index.php
src
|—classes
    |— MyClass
          |— MyClass.php
vendor
|—autoload.php
composer.json

सूचकांक.php

<?php

namespace ink;

require ( vendor/autoload.php );

use ink\src\classes\MyClass\MyClass;

$customclasse = new MyClass();

MyClass.php

<?php

namespace ink\src\classes\MyClass;

class MyClass {

     public function __construct(){
     }
}

संगीतकार.जेसन

{
    autoload : {
        psr-4 : {
            ink\\ : src 
        }
    }
}

मैं क्या गलत कर रहा हूँ? नामस्थान अच्छा कारण लगता है जब मुझे MyClass.php की आवश्यकता होती है, सबकुछ ठीक काम करता है, कक्षा लोड हो जाती है।

धन्यवाद

0
akio 22 फरवरी 2019, 19:40

2 जवाब

सबसे बढ़िया उत्तर

आप एक src स्तर को दोगुना कर रहे हैं।

ink\\ : src द्वारा आप कह रहे हैं कि ink के बाद कुछ भी src फ़ोल्डर में है।

लेकिन आपकी कक्षा ink\src\classes\MyClass नामस्थान में है।

तो यह src+src/classes/MyClass=src/src/classes/MyClass पथ तक जुड़ जाता है।

तो आपको इसकी आवश्यकता होने की संभावना है:

{
    autoload : {
        psr-4 : {
            ink\\src\\ : src 
        }
    }
}
1
Rarst 22 फरवरी 2019, 20:47

सबसे पहले, ऐसा लगता है कि आप PSR-4 विनिर्देश का सम्मान नहीं कर रहे हैं।

विनिर्देश के अनुसार कहते हैं:

पूरी तरह से योग्य वर्ग के नाम का निम्न रूप है:

\NamespaceName(\SubNamespaceNames)*\ClassName

फ़ोल्डर संरचना

├── composer.json
├── public
│   └── index.php
├── src
│   └── Classes
│       └── Models
│           └── MyClass.php
└── vendor
    ├── autoload.php
    └── composer
        ├── autoload_classmap.php
        ├── autoload_namespaces.php
        ├── autoload_psr4.php
        ├── autoload_real.php
        ├── ClassLoader.php
        └── LICENSE

Index.php

<?php

require '../vendor/autoload.php';

use Ink\Classes\Models\MyClass;

$customclasse = new MyClass();

?>

संगीतकार.जेसन

{
    "name": "app",
    "type": "project",
    "description": "app",
    "autoload": {
        "psr-4": { "Ink\\": "src/" }
    }
}

MyClass.php

<?php 

namespace Ink\Classes\Models;

class MyClass {

     public function __construct(){
     }
}
2
Abdelkarim EL AMEL 22 फरवरी 2019, 20:52