Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: k@rl.pflaesterer.de (Karl =?utf-8?Q?Pfl=C3=A4sterer?=) Newsgroups: de.comp.lang.php Subject: Re: Klassendefinition, wo? Date: Thu, 04 Feb 2016 07:00:53 +0100 Lines: 39 Message-ID: References: <1t56b261f2i4870n3e8%sfroehli@Froehlich.Priv.at> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net sb2IxtAavsFDqML3vYW5fwWqiERG4/pdeqMyX3Blw+nveGBJc= Cancel-Lock: sha1:NJESBf9/qk6Mk7kVsWDSozfZ6Fw= sha1:u5GTRQpm0zlcHhoxr0szhemBAio= User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (darwin) Xref: csiph.com de.comp.lang.php:3672 Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) writes: > Mein System beglückte mich heute etwas unerwartet mit der Meldung: > > | Cannot declare class Page_Webshop_Search, because the name is already in use > > Das ganze passiert bei einem: > > | require_once 'search.php'; > > ...welches aus verschiedenen Gründen den sonst in Verwendung befindlichen > Autoloader umgeht. Zunächst fand ich die Meldung seltsam, weil ich > konsequent require_once verwende, und da doch eigentlich nichts doppelt > geladen werden sollte - das wäre dann aber "Cannot REdeclare class", und > tatsächlich, wenn ich vor der Klassendefinition in search.php ein "die;" > setze, ändert sich gar nichts, das File wird also gar nicht geladen. > > Nun habe ich ein grep über den gesamten Quelltext gemacht, aber nichts > anderes gefunden, was "page_webshop_search" heisst. Wie um alles in der > Welt bekomme ich jetzt heraus, *woher* der Name "already in use" ist und > als was er "in use" ist? Bist du sicher, dass dein Autoloader nicht doch gelaufen war? Hast du Opcache? Diese Fehlermeldung bekommt man mit Namespaces hin. php -a Interactive shell php > namespace n1 { class k1 {}} php > class k1 {} php > use n1\k1; PHP Fatal error: Cannot use n1\k1 as k1 because the name is already in use in php shell code on line 1 Fatal error: Cannot use n1\k1 as k1 because the name is already in use in php shell code on line 1 php >