Variabele classname werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Back-end Developer (Permanent position with the em

Bedrijfsomschrijving Dutch specialist in technical installation materials. Functieomschrijving Purpose of the position: Our client is looking for a Back-end Developer who, together with the rest of the energetic and dynamic team, is responsible for the development and management of the website. This not only concerns the development and management of the current website, but also the development of a new Headless Commerce Platform to keep the customer's website Future proof. Within the IT department, there is a real DevOps culture and the commerce team is at the forefront and tries to implement continuous improvements. Most important tasks: ï‚· Designing and

Bekijk vacature »

Java Developer

Functieomschrijving Are you an experienced Java Developer who wants to be challenged? Then this is your job! As a Java Developer, you are co-responsible for building custom applications within our extensive IT landscape. Development takes place on both the back-end side (Spring/JEE). Together with the IT department, you are responsible for the daily adjustments and expansions of our IT systems. In addition, you will work in small scrum teams using the Agile methodologies. Besides the realization of our in-house systems, you are responsible for the roll-out of the application (version) as well as the operational support after going live. Team

Bekijk vacature »

Java developer - procesoptimalisatie (Inhouse)

Functie Wat ga je doen als Java developer? Jij als back end developer hebt al enige ervaring opgedaan in jouw vakgebied. Voornamelijk het werken met Java en Spring spreekt jou aan. Jij wordt samen met je collega developers in het team verantwoordelijk voor de gehele back end van de applicatie. Hierdoor heb jij veel zelfstandigheid in je rol en zul je ook zelf beslissingen samen met de PO maken. Er wordt gewerkt volgens de SCRUM methodiek, om zo structuur te creëren in de werkzaamheden. Binnen de 2-wekelijkse sprints pak jij je taken op die samen met de PO afgestemd zijn.

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »

Outsystems Developer Medior

Dit ga je doen Bouwen aan nieuwe en innovatieve applicaties; Maken van koppelingen tussen Outsystems en het bestaande applicatielandschap; Troubleshooting op bestaande software. Hier ga je werken De organisatie is internationale speler binnen de bouwbranche en richt zich op de infrastructuur, zowel boven als onder de grond. Ze zijn ruim 1100 man groot en maken op IT vlak een mooie groei door. Als ervaren Developer kom je te werken op een IT-afdeling van zo'n 25 man groot. Een aantal jaar geleden hebben ze de keuze gemaakt om zich meer te gaan richten op ontwikkeling en door de groei van de

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Senior .NET Ontwikkelaar

In het kort Als Senior .NET ontwikkelaar ga je binnen onze business unit Transport en Logistiek aan de slag met complexe maatwerk software voor bedrijf kritische systemen binnen de technische automatisering. Denk bijvoorbeeld een IoT-oplossing voor de logistieke sector waarbij we van ruim 200.000 machines de telemetrie en events verwerken. We zijn actief in de distributielogistiek, havenlogistiek (denk aan ECT) en productielogistiek. Naast C# en .NET Core maken we ook gebruik van Azure technologie. En als trotse Microsoft Gold Partner leren we graag van en met jou. Wil jij jezelf blijven ontwikkelen binnen de technische automatisering met .NET, dan gaan

Bekijk vacature »

HBO startersfunctie .NET Ontwikkelaar

Functie omschrijving We are looking for a dutch native speaker Ben je in januari 2023 klaar met je HBO opleiding en zoek je een mooie uitdaging? Wacht niet langer en solliciteer direct! Voor een familiebedrijf in de regio van Boxtel ben ik op zoek naar een C#.NET Ontwikkelaar. Jij gaat aan de slag met de (door)ontwikkeling van de maatwerksoftware projecten en gaat ook nieuwe software bouwen, middels de Microsoft-stack. Het bedrijf maakt gebruik van de volgende technieken: C# & ASP.NET; MVC; MS SQL; Entity Framework; Je krijgt hier veel tijd om te leren en eventueel door te groeien en het

Bekijk vacature »

Ervaren PHP ontwikkelaar

Functie Jij als PHP ontwikkelaar komt te werken in een team van 4 andere PHP ontwikkelaars. Je zult je voornamelijk bezig houden met: – Het ontwikkelen van nieuwe features – Doorontwikkelen van de API – Nadenken over de technische infrastructuur – Datakwaliteit Samen met het team ben jij verantwoordelijk voor de verdere ontwikkeling van de software en om de positie als marktleider in Europa te behouden. Ze werken volgens SCRUM in 2 wekelijkse sprints, werken met Jira voor alle tickets en communiceren veel via Slack. Eisen • Minimaal 3 jaar ervaring als back end developer • Je hebt affiniteit met

Bekijk vacature »

Database developer - SQL

Functie omschrijving Kan jij goed overweg met complexe algoritmes en het schrijven van procedures in T-SQL? Heb jij al wat ervaring opgedaan met SQL en vind je het tijd voor de volgende stap? Lees dan snel verder! Dit software bedrijf, gespecialiseerd in de ontwikkeling van logistieke software, is op zoek naar een ervaren SQL database developer. Jouw werkzaamheden zullen onder andere bestaan uit: Je sluit aan bij meetings en brengt het gehele logistieke proces in kaart. Vervolgens ga je als lead developer aan de slag om de klus te klaren. Je stuurt het junior developer team en helpt, zo nodig,

Bekijk vacature »

Ervaren Software Developer

Functie omschrijving Ben jij een ervaren Software Developer, en heb je ervaring met technieken zoals C#, MS Access & SQL? Vind jij het leuk om maatwerk software te ontwikkelen voor klanten in een specifieke branche? Dan is dit de baan voor jou! Als ontwikkelaar ben jij samen met een team van 12 collega’s verantwoordelijk voor het bouwen van nieuwe functionaliteiten en het uitbreiden van de core applicatie. Belangrijk is dat je ervaring hebt met C# en MS Access. Je bent flexibel en klantvriendelijk ingesteld, omdat het belangrijk is om de klanten zo goed mogelijk van dienst te kunnen zijn. Thuiswerken

Bekijk vacature »

Gezocht: Ervaren VB6 developer met C# ambitie!

Bedrijfsomschrijving Dit bedrijf is een vooraanstaande softwareleverancier die gespecialiseerd is in het ontwikkelen van software pakketten voor autoschade herstel bedrijven. De software wordt gebruikt door meer dan de helft van alle autoschade herstel bedrijven in Nederland. Het team van professionals is op zoek naar getalenteerde collega developers die hun vaardigheden willen inzetten om het bedrijf te laten groeien. Functieomschrijving Voor dit bedrijf zoek ik een ervaren VB6 / VB.NET developer met interesse om op termijn verder te gaan in C#. In deze functie ben je verantwoordelijk voor het onderhouden van de bestaande softwarepakketten. Een deel van de code is nog

Bekijk vacature »

PHP Developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »
Joakim Broden

Joakim Broden

20/08/2012 15:48:39
Quote Anchor link
Dit werkt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    namespace Library\Framework\Config;

    $this->adapter = new Adapter\Ini($options);
?>

En dit werkt niet (hier neemt hij de namespace niet over, dus ipv Library\Framework\Config\Adapter\Ini word het Adapter\Ini:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    namespace Library\Framework\Config;

    $adapter = 'Adapter\Ini';
    $this->adapter = new $adapter($options);
?>


Waarom werkt de tweede manier niet? Want ik wil met adapters werken zodat ik mijn config kan inlezen via bv csv, xml, ini zonder dat ik het complete script hoef te veranderen..
Gewijzigd op 20/08/2012 15:49:23 door Joakim Broden
 
PHP hulp

PHP hulp

10/01/2025 18:40:27
 
John Berg

John Berg

20/08/2012 15:56:14
Quote Anchor link
Probeer dit eens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    namespace Library\Framework\Config;

    $adapter = 'Adapter\\Ini';
    $this->adapter = new $adapter($options);
?>
Gewijzigd op 20/08/2012 15:56:39 door John Berg
 
Joakim Broden

Joakim Broden

20/08/2012 17:02:16
Quote Anchor link
Nee dat werkt ook niet
 
John Berg

John Berg

20/08/2012 17:12:59
Quote Anchor link
Vreemd. Als je de '\' escaped is het eerste voorbeeld gelijk aan het tweede.

Het enige wat ik nog kan bedenken is dat de namespace Adapter relatief in de namespace Library\Framework\Config niet bestaat, maar dan zou het eerste voorbeeld ook niet werken.

Ik doe in mijn code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$modelclass = '\\Ganymedes\\MVC\Models\\' . $this->router->controller;

if( class_exists( $modelclass ))
   $model = new $modelclass();


Werkt als een zonnetje. Het enige verschil met jouw code is dat ik een absolute namespace opgeef.
 
Joakim Broden

Joakim Broden

20/08/2012 17:23:56
Quote Anchor link
Ja maar het gekke is als 'Adapter\Ini' doe doet hij het wel, maar als ik 'Adapter\Ini' eerst opsla in een variable dan doet hij het weer niet...
 
Joakim Broden

Joakim Broden

21/08/2012 17:53:01
Quote Anchor link
Bump??

Dit werkt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    namespace Library\Framework\Config;

    $this->adapter = new Adapter\Ini($options);
?>

Dit werkt ook:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    namespace Library\Framework\Config;

    $adapter = __NAMESPACE__.'Adapter\Ini';
    $this->adapter = new $adapter($options);
?>

Dit werkt niet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    namespace Library\Framework\Config;

    $adapter = 'Adapter\Ini';
    $this->adapter = new $adapter($options);
?>

Waarom neemt hij bij de laatste de namespace 'Library\Framework\Config' niet over?
Gewijzigd op 21/08/2012 17:55:06 door Joakim Broden
 
John Berg

John Berg

21/08/2012 18:20:39
Quote Anchor link
Wat is de foutmelding?

Op 20-8 om 17:12 schreef ik al dat namespaces ook relatief t.o.v. elkaar of absoluut kunnen worden aangegeven. Ik gebruik uitsluitend absolute namespaces dus met een ' \' aan het begin, om net als bij includes niet te hoeven bijhouden waar ik sta.

Overigens moet je een '\' in een string escapen, dus als je een string met waarde '\' wil hebben dan doe je '\\'
 
Joakim Broden

Joakim Broden

21/08/2012 19:49:07
Quote Anchor link
Foutmelding is dat mijn autoloader de class niet kan vinden aangezien hij de namespace niet overneemt. Het klopt dat je absolute paden kan geven en dat doe ik momenteel nu ook alleen ik wil weten WAAROM php de namespace niet overneemt bij een variabele class naam.
 
John Berg

John Berg

21/08/2012 20:15:33
Quote Anchor link
Laat eens zien hoe je de adapter class files include, en hoe de definitie van die namespace eruit ziet.

n.b. zoals ik al eerder zei: namespaces hebben niets van doen met het onderliggende file systeem!!

En dit komt regelrecht uit mijn code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$modelclass = '\\Ganymedes\\MVC\Models\\' . $this->router->controller;

if( class_exists( $modelclass ))
   $model = new $modelclass();
 
Joakim Broden

Joakim Broden

22/08/2012 10:07:41
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
    namespace Library\Framework\Config;
    
    class ConfigFactory {
        /**
         * Avaible config file extentions.
         *
         * @acces protected.
         * @var array.
         */

        protected static $extensions = array(
            'ini'     => 'Ini',
            'csv'     => 'Csv',
            'xml'     => 'Xml',
            'json'     => 'Json'
        );
        
        /**
         * Load a config file.
         *
         * @acces public.
         * @param string $filename. The config file.
         * @param boolean $return. Return as config object.
         * @return array|object. If $return is true return config object, return array if false.
         */

        public static function loadConfigFromFile($filename, $return = false) {
            $pathinfo = pathinfo($filename);
            
            if (!isset($pathinfo['extension'])) {
                throw new Exception\RuntimeException(sprintf('Failed to initialize %s, filename "%s" is missing an extension and cannot be auto-detected.', __CLASS__, $filename));
            }

            
            $extension = strtolower($pathinfo['extension']);
            
            if ($extension === 'php') {
                if (!is_file($filename) || !is_readable($filename)) {
                    throw new Exception\RuntimeException(sprintf('Failed to initialize %s, file "%s" does not exist or is not readable.', __CLASS__, $filename));
                }

                
                $config = include $filename;
            }
elseif (isset(self::$extensions[$extension])) {
                $reader = 'Reader\\'.self::$extensions[$extension];
                $reader = new $reader(); // Werkt niet...

                //$reader = __NAMESPACE__.'\\Reader\\'.self::$extensions[$extension];
                //$reader = new $reader(); //Werkt wel

                //$reader = new Reader\Ini(); \\ Werkt wel


                
                
                $config = array();
            }
else {
                throw new Exception\RuntimeException(sprintf('Failed to initialize %s, unsupported config file extension: .%s.', __CLASS__, $pathinfo['extension']));
            }

            
            return ($return) ? new Config($config) : $config;
        }
    }

?>

en roep het zo aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    $config
= ConfigFactory::loadConfigFromFile(ROOT.'\config.ini');
?>

Foutmelding is dat hij de 'Adapter\Ini.php' met de ini class niet kan vinden. In mijn autoloader kan ik zien dat hij de namespace niet overneemt terwijl dat normaal wel is. Normaal krijgt mijn autoloader de classes zo binnen 'Library\Framework\Config\Adapter\Ini' alleen nu krijg ik hem als 'Adapter\Ini' binnen met gevolg dat de class niet bestaat.
Gewijzigd op 22/08/2012 10:40:24 door Joakim Broden
 
John Berg

John Berg

22/08/2012 10:29:37
Quote Anchor link
zou je voor regel 43 eens dit willen invoegen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    echo '<pre> . '$reader . </pre>;
?>


Wat zie je dan?

Ik begrijp dus dat de namespace van je reader Library\Framework\Config\Adapter is, m.a.w. een sub van de namespace van je loader. In dat geval zou ik ervoor gaan om de absolute namespace naam te gebruiken, m.a.v. de code zoals die in regel 45 staat.
 
Joakim Broden

Joakim Broden

22/08/2012 10:40:04
Quote Anchor link
Als ik dat doe krijg ik 'Reader\Ini' terug. En zoals je zegt gebruik ik nu absolute namespace. Dit vind ik niet mooi maar is nu wel even een oplossing zodat ik verder kan.

Maar kan iemand mij misschien de logica/nut uitleggen van waarom hij de namespace niet overneemt?
 
John Berg

John Berg

22/08/2012 11:10:46
Quote Anchor link
Hertog Jan op 22/08/2012 10:40:04:

Maar kan iemand mij misschien de logica/nut uitleggen van waarom hij de namespace niet overneemt?


De korte versie komt er op neer dat als je een namespace gebruikt, je die altjd in een bepaalde context moet zien.

Als ik namespace Lib\Test declareer en vervolgens code runt dan gebeurt dat in de context van de huidge namespace.
Zou ik de constante PDO::FETCH_ASSOC willen gebruiken dan zal dat een foutmelding geven omdat Lib\Test\PDO::FETCH_ASSOC niet bestaat. De class constant bestaat namelijk binnen de root namespace en moet dus aangeroepen worden als \PDO::FETCH_ASSOC

Helemaal erg wordt het als ik dit ga doen:

namespace Lib\Test

..
include 'proefje.php' (binnen proefje staat namespace Proef;)

mijn context is nu Lib\Test\Proef

maar als ik dit doe:

namespace Lib\Test

..
include 'proefje.php' (binnen proefje staat namespace \Proef;)

dan is mijn context \Proef

Op deze manier werken is foutgevoelig, als je proef.php veranderd, veranderd ook de context binnen het bestand waarin proef.php geinclude wordr.

Om dat te voorkomen werk ik altijd met absolute namespaces. (net als ik altijd met absolute file paden werk)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.