0

I have created a module in drupal 8 . I need to use a class which is in external file .

File name : drupal.php

Class name : class newman{...}

In drupal.php ( have many classes ):

<?php
namespace Drupal\mymodulename\lib;
class newman{
   public function new(){
       $dp = 'TEST';
       return $dp;
   }
}
?>

In my controller :

<?php
namespace Drupal\mymodulename\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\mymodulename\lib\drupal;

class mmController extends ControllerBase {
    public function man() {
          $this->man=new newman();
          $build['test'] = [
                            '#markup' => $man->new(),
                           ];
    }
}

Error: Class 'Drupal\mymodulename\Controller\newman' not found in Drupal...

How can I fix it ?

closed as off-topic by kiamlaluno Apr 10 '17 at 11:35

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions on programming, PHP, SQL, etc. that do not relate directly to Drupal are off-topic here, but can be asked on Stack Overflow." – kiamlaluno
If this question can be reworded to fit the rules in the help center, please edit the question.

  • Avoid using a class name of drupal / filename drupal.php. – Kevin Apr 7 '17 at 23:00
  • This is still another PHP question about namespaces, not a Drupal question. You first define the namespace to be Drupal\mymodulename\lib, then the code contains use Drupal\mymodulename\lib\drupal; which is telling PHP to use the Drupal\mymodulename\lib\drupal class, which is not the class you first defined. And since you aren't using a use statement for the newman class, PHP doesn't know what class you are trying to use. – kiamlaluno Apr 10 '17 at 11:31
  • To make it clearer: Drupal question doesn't mean every question I have while using Drupal or developing a Drupal module. A plain PHP question that doesn't require any Drupal knowledge to be answered is not a Drupal-specific question, and it is off-topic for us. We don't teach PHP, including how PHP uses namespaces. – kiamlaluno Apr 10 '17 at 11:34
  • Also, basing on the comments left for the answer, you aren't even showing the real code you are using. It is quite hard to help when you aren't showing the code you use. – kiamlaluno Dec 26 '17 at 9:07
2

Your use statement is wrong. It should be:

use Drupal\mymodulename\lib\newman; - no Drupal on the end.

Aside from that, you should strive to inject dependencies in the constructor.

Also, there should not be a difference between the file name and classname. It makes it harder to debug and organize. The file should be named newman.php not drupal.php.

The error is referencing the fact that it cannot locate your class at the given namespace. It would help to brush up on PSR-4/autoloading in Drupal 8 as well as naming conventions and standards.

  • In real I use nusoap.php file and this file has many class . I want use nusoap_client class in nusoap.php . how can I do this ? – RobinSon Apr 8 '17 at 6:25
  • What does this have to do with NuSoap? – Kevin Apr 8 '17 at 12:53
  • Payment method need this file. – RobinSon Apr 8 '17 at 12:56
  • @Kevin The OP is not showing the code he is effectively using. I take he is trying to use nusoap.php, which doesn't support namespaces, and he is not able to convert the classes in classes using namespaces. Your answer is correct for what the OP shows, but what the OP shows is not the code he is trying to use. – kiamlaluno Dec 26 '17 at 9:09

Not the answer you're looking for? Browse other questions tagged or ask your own question.