Skip to content

PHP classes in namespaces not found

I tried to load a utility class to my main class with a namespace but everytime I try to run it it seems to not be working as in not finding the class. The error I got is:

Array
(
    [0] => C:xampphtdocsProjectPapaassetsphpClassesVerification.php
    [1] => C:xampphtdocsProjectPapaassetsphpautoload.php
)
PHP Fatal error:  Uncaught Error: Class "VerificationVerificationUtility" not found in C:xampphtdocsProjectPapaassetsphpClassesVerification.php:7
Stack trace:
#0 {main}
  thrown in C:xampphtdocsProjectPapaassetsphpClassesVerification.php on line 7

Fatal error: Uncaught Error: Class "VerificationVerificationUtility" not found in C:xampphtdocsProjectPapaassetsphpClassesVerification.php:7
Stack trace:
#0 {main}
  thrown in C:xampphtdocsProjectPapaassetsphpClassesVerification.php on line 7

The first array is for me to check what files is included using the get_included_file() function and I have loaded my autoload.php file which loads the rest of my utility classes. This is my code that throws the error above:

<?php
namespace Verification;

include dirname(__DIR__) . "\autoload.php";
use VerificationVerificationUtility as utility;

echo (new utility())->test();
print_r(get_included_files());

and my autoload.php file:

<?php
foreach (glob("Classes/*Utility.php") as $filename)
{
    include_once $filename;
}

print_r(get_included_files());

I tried searching online but I cannot find a solution. I tried php namespace Class not found or PHP namespace confusion, class not found

I made changes and double checked my code, I am including the utility class from autoload.php as this is the output of autoload.php

$ php autoload.php
Array
(
    [0] => C:xampphtdocsProjectPapaassetsphpautoload.php
    [1] => C:xampphtdocsProjectPapaassetsphpClassesVerificationUtility.php
)

Is my autoloading somehow wrong? Thanks for any help in advance.

Edit: I tried to include the file only without the autoload and it is working just fine. However I would like to use the autoloader because if my classes start expanding it would be a pain to include every single file.

Answer

It looks like the pattern in glob is relative to the working directory, you may use a determined path.

glob(dirname(__DIR__) . "/Classes/*Utility.php")