Rolf B: Problem beim Nutzen einer klasse

Beitrag lesen

Hallo Pit,

die use Befehle legen fest, dass die Klassen PHPMailer und Exception aus dem Namespace PHPMailer\PHPMailer zu nehmen sind.

Ein use-Befehl ist in einer Funktion nicht zulässig, er muss im "outermost scope" stehen, weil er vom Compiler ausgeführt wird und nicht zur Laufzeit. Sagt das PHP Handbuch.

Also - ab auf die Schulbank und drück Dir rein, was es Seit PHP 5.3 mit namespaces und dem use Statement auf sich hat.

Grundsätzlich sollte das so klappen wie Du es beschrieben hast, sogar mit require in einer Funktion. Ich habe das mal auf der Windows Kommandozeile ausprobiert (Spielplatz mit PHP 7.1):

phpMailer.php:

<?php
namespace Foo;

class PhpMailer 
{
   function send() 
   {
       echo "Bi Bi Bi Bipp!\n";
   }
}

test.php:

<?php
use Foo\PhpMailer;

function TEST() 
{
   require __DIR__ . "\PHPMailer.php";

   $m = new PhpMailer();
   $m->send();
}

TEST();

Rolf

--
sumpsi - posui - clusi