Namespace geeft error: 'undefined constant'

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full stack developer Node.js

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »

Full stack Python developer

Functie Samen met andere collega’s (een product owner, een software manager en een ervaren ontwikkelaar) ga jij onze producten verder ontwikkelen. Jouw verantwoordelijkheden zullen bestaan uit: – Verder wil gaan met de ontwikkeling van onze bestaande producten; nieuwe features! – Meedenkt over de roadmap van onze producten – Als sparringpartner kan optreden op het gebied van development – Zelf ook nieuwe ideeën op tafel durft te leggen en deze van scratch af aan wilt bouwen Hieronder ook een paar voorbeelden van projecten waar we momenteel mee bezig zijn of binnenkort aan willen beginnen: – Real-time interactie creëren in onze web

Bekijk vacature »

(Junior) Back-end Ontwikkelaar

Functie omschrijving We are looking for a dutch native speaker Altijd al willen werken bij een organisatie, die maatwerk applicaties bouwt, die echt impact hebben in de maatschappij? Dit is je kans. Voor een kleine organisatie in de regio van Eindhoven ben ik op zoek naar een C# Ontwikkelaar. Jij gaat aan de slag met de ontwikkeling van maatwerk software en applicaties. Deze organisatie werkt voor grote organisaties in Nederland, maar ook voor het MKB. De projecten waar je aan gaat werken zijn erg divers, waardoor je werk uitdagend blijft en je erg veel kan leren. Verder ga je aan

Bekijk vacature »

SQL beheerder / ontwikkelaar

Functie omschrijving Voor een klant in omgeving Tiel zijn wij op zoek naar een SQL beheerder met affiniteit met technisch applicatiebeheer. Je krijgt een fijne in-house werkplek waar je gaat werken aan diverse projecten. Dit bedrijf doet het beheer van databases voor een aantal bancaire klanten. Op dit momenten hebben zij ruim 1500 databases in beheer. Jouw werkzaamheden gaan er als volgt uit zien: Je gaat de development afdeling ondersteunen bij het ontwikkelen van MS SQL Scripts. Je zal zowel zelfstandig als in teamverband MS SQL databases installeren & beheren. Je monitort en onderzoekt incidenten en de achterliggende oorzaken. Je

Bekijk vacature »

Back end developer Digital Agency

Functie Wij zijn van origine een wordpress bureau, maar sinds 2006 zijn wij dit wel redelijk ontgroeid. Naar mate de jaren verstreken zijn we gegroeid in omvang, maar ook in de complexiteit van opdrachten waarin wij onze klanten kunnen bedienen. Momenteel bestaat onze organisatie uit 4 front end developers, 12 back end developer 3 projectmanagers en een 2 koppig management. Wij zijn een hele informele, bijna familiaire organisatie. Geen strak pak of overhemd, nee gewoon dragen waar jij je prettig bij voelt. De gemiddelde leeftijd ligt tussen de 25 en 30 en wij doen er veel aan om onze hechte

Bekijk vacature »

Software programmeur

Functieomschrijving Voor een uitdagende werkgever in regio Breda zijn wij op zoek naar een Full Stack C#.NET programmeur. Je bent verantwoordelijk voor het ontwikkelen van apps, webapplicaties en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere developers en engineers om de sensoren in machines te scannen en vervolgens de data om te zetten in management informatie voor de klanten. Taken en verantwoordelijkheden: Je gaat aan de slag met de volgende technologieën en frameworks: C#, JS frameworks, HTML, TypeScript, SQL & C++, CSS. Geen ervaring met één van deze technologieën is dan ook geen enkel probleem! Deze werkgever biedt

Bekijk vacature »

Front End Developer React Vue

Dit ga je doen Meewerken aan de implementaties en ontwikkeling van nieuwe functionaliteiten van de webapplicaties; Ontwikkelen met o.a. React en Vue en HTML/CSS, ook krijg je in verband met de samenwerking ook affiniteit met de backend Ruby on Rails; Ontwikkeling aan de front end voor de koppelingen tussen de diverse systemen; Ontwerpen van interfaces en een bijdrage leveren aan de gebruikerservaring; Zorgdragen voor hoge kwaliteit van code en jezelf (en anderen) blijven verbeteren; Als Senior Front End Developer begeleid je zelf ook FE-development projecten, hierin leid je de projecten en pak jij het initiatief op (bv integratieprojecten). Hier ga

Bekijk vacature »

Medior/senior Back-end developer gezocht!

Functie Vanwege de groei binnen het bedrijf zijn we op zoek naar versterking in het devlopmenttean. Als back-end developer bouw je aan de bedrijfssoftware die ons helpt bij de primaire processen. Een leuk (intern) project dus waarbij je de software continu doorontwikkeld! Je werkt in een klein team, we hebben dagelijks stand-ups en iedere twee weken een scrum-sessie, begeleid door onze Scrum Master. Hierin krijg je uitgebreid de kans om je ideeën te presenteren, en te overleggen met je mede-ontwikkelaars en de Product Owner. Binnen de ontwikkelteams gebruiken we Trello, Gitlab, Jiira, Confluence en Boockstack. Hiernaast werken ze met de

Bekijk vacature »

Webshop beheerder / Fullstack developer

Functie omschrijving Wij zijn op zoek naar een full stack developer die zich bezig gaat houden met het uitbreiden en verbeteren van de online webshop. Een onderdeel van jouw werkzaamheden is naast het beheren van de webshop ook om de processen en structuren te stroomlijnen. Ben jij een leergierige en ambitieuze junior developer met technische skills? Ben jij op zoek naar een werkgever die jouw de volledige vrijheid geeft om jezelf tot een volwaardige senior te ontwikkelen? Lees dan snel verder! Werkzaamheden Onderhouden van de webshop (denk aan het bijhouden van de voorraad); Nieuwe functies toevoegen aan de product configurator

Bekijk vacature »

Back End Developer

As a Back End developer at KUBUS you will be developing the (web) application and services of BIMcollab. You have a focus on the back end of our software, for which we mainly work with C# and .NET. We use a full-stack approach, which means that in addition to the back-end, you will also help with other parts of the code. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact

Bekijk vacature »

T-SQL Database developer

Functie omschrijving Ben jij een ETL database specialist? Houd jij ervan om te puzzelen met Databases, Query's & Stored procedures? Zoek jij uitdaging, vrijheid en verantwoordelijkheid? Zoek dan niet verder! Wij zijn per direct op zoek naar medior en senior database developers. Je gaat werken voor een relatief klein softwarebedrijf in omgeving Tilburg. Samen met 12 collega's (allemaal techneuten), ga jij je bezig houden met het bouwen en/of onderhouden van database software. Deze software wordt internationaal ingezet voor het automatiseren van logistieke processen. Jouw werkzaamheden gaan er als volgt uit zien: Je bent in een klein team met developers, verantwoordelijk

Bekijk vacature »

PHP Web Developer

Functie omschrijving Voor een klein softwarebedrijf in de omgeving Roosendaal, zijn wij op zoek naar een PHP web developer met een aantal jaar werkervaring. Wil jij graag werken aan in-house software projecten voor diverse klanten? Voel jij je prettige in een klein team developers, waar jouw inbreng enorm gewaardeerd wordt? Lees dan snel verder! Jouw werkzaamheden zien er als volgt uit: Je wordt verantwoordelijk voor de ontwikkeling van diverse applicaties. Dit kan de ene keer een online platform voor aanbiedingen zijn, en de andere keer een software pakket dat gebruikt wordt om interne processen te automatiseren. Het zijn stuk voor

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 »

Junior .NET developer

Functie Wij hebben drie scrumteams. Het eerste team focust zich op het stukje hardware wat wij in huis doen. Zij maken als team o.a. gebruik van C++. De andere twee scrumteams zijn allebei bezig met data verwerking en maken hierbij in de backend gebruik van C# .NET / .NET Core. Het verschil tussen deze teams is dat één team de data verwerking doet voor de mobiele applicatie. Zij werken hierbij dus ook met Xamarin. Het andere team focust zich op de webapplicaties en maakt hierbij ook gebruik van ASP.NET MVC. Op basis van jouw ambities en kwaliteiten kijken wij samen

Bekijk vacature »

Front-end developer Consultancy in teamverband wer

Functie Het team bestaat uit User Experience designers, Data Scientists en Software Engineers. Momenteel zijn ze op zoek naar een ervaren Front-end of Fullstack developer die samen met de consultants aan de slag gaat om de business requirements te vertalen naar technische oplossingen. Los van het finetunen van extenties, help je bij het configureren van bijvoorbeeld een mobiel bankieren app. Hierin ben je van A tot Z betrokken en zie je bijvoorbeeld ook toe op de uitvoering van testen. Je expertise wordt optimaal benut en je krijgt verschillende kansen om deze uit te breiden door met verschillende innovatieve technologieën aan

Bekijk vacature »
- Raoul -

- Raoul -

07/11/2012 23:29:30
Quote Anchor link
Hallo PHP-ers,

Heb een probleempje met namespaces in mijn project.
Fout die ik krijg:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Fatal error: Undefined constant 'Whear\User' in /Applications/XAMPP/xamppfiles/htdocs/lib/Whear/User/User.php on line 3


'k Snap niet echt hoe namespaces als constant worden gezien? Ik gebruik PHP54 dus het is zeker compatibel

Hier een deel van m'n code:

index.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
require 'lib/Whear/User/User.php';

$user = new \Whear\User;
?>


User.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

namespace \Whear\User;

class User extends \Whear\DomainObject\DomainObjectAbstract
{
    protected $_data = array('username' => 'Raoul', 'password' => 'test');
}

?>


Als iemand mij hiermee kan helpen?
Bedankt.
 
PHP hulp

PHP hulp

28/11/2024 15:38:38
 
Reshad F

Reshad F

08/11/2012 00:24:53
Quote Anchor link
Haal de \ is weg. Dat veroorzaakt de fatal error.

hier voorbeeld zie example 10 in het voorbeeldje
 
- Raoul -

- Raoul -

08/11/2012 00:31:35
Quote Anchor link
Dat werkt bedankt, maar ik heb nu nog steeds een probleem dat ik mijn classes met includen. Ik dacht dat dat niet moest met namespaces... huh?

Toevoeging op 08/11/2012 00:34:49:

Heb nu alles wel geïnclude, maar binnen User.php krijg ik nu wel de error:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Fatal error: Class 'Whear\DomainObject\DomainObjectAbstract' not found in /Applications/XAMPP/xamppfiles/htdocs/lib/Whear/User/User.php on line 6


Ik heb de DomainObjectAbstract geïnclude in mijn index :s...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

namespace Whear\DomainObject\DomainObjectAbstract;

abstract class DomainObjectAbstract
{

//...
?>
Gewijzigd op 08/11/2012 00:35:15 door - Raoul -
 
Reshad F

Reshad F

08/11/2012 01:11:02
Quote Anchor link
Waarom zou je classes moeten includen wanneer je gebruik kan maken van een autoloader?

de loader die ik gebruik:

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
<?php

/*
 * Loader
 */


function my_autoloader($className)
{

// haal de base dir op.
  $base = dirname(__FILE__);
  
  // het pad ophalen
  $path = $className;

  // alle paden samenvoegen tot waar ik zijn moet en de phpfile eraan plakken.
  $file = $base . "/lib/" . $path . '.php';      
  
  // als file bestaat haal op anders error
  if (file_exists($file))
  {

      require $file;
  }

  else
  {
      error_log('Class "' . $className . '" could not be autoloaded');
      throw new Exception('Class "' . $className . '" could not be autoloaded from: ' . $file);
  }
}


spl_autoload_register('my_autoloader');

?>


Maar mijn loader is ook gemaakt om alles in de lib directory te gooien en het daarvanuit op te halen weer.. ik neem aan dat als je met namespaces werkt je verschillende mappen hebt. duss je moet de loader aanpassen. zie hier:

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
<?php
class Autoloader {
    static public function loader($className) {
        $filename = "Classes/" . str_replace('\', '/', $className) . ".php";
        if (file_exists($filename)) {
            include($filename);
            if (class_exists($className)) {
                return TRUE;
            }
        }
        return FALSE;
    }
}
spl_autoload_register('
Autoloader::loader');
?>


het enige wat je nu hoeft te doen is de loader invoegen dus gewoon bovenin

require_once("Classes/Autoloader.php"); o.i.d..
 
- Raoul -

- Raoul -

08/11/2012 07:28:35
Quote Anchor link
Ja maar een autoloader gebruiken is nu niet relevant met mijn probleem.
 
Wouter J

Wouter J

08/11/2012 07:42:11
Quote Anchor link
Het probleem is dat je de klasse DomainObjectAbstract in de namespace Whear\DomainObject\DomainObjectAbstract zet. Dat betekend dus dat de klasse: Whear\DomainObject\DomainObjectAbstract\DomainObjectAbstract wordt. Ik denk dat je die laatste DomainObjectAbstract bij de namespace moet weglaten.

Tevens nog even over je eerste error: De \ vooraan betekend vanaf de root. De Use statements zijn altijd vanaf de root en PHP wil daar dus niet nog eens de \ hebben.
 
- Raoul -

- Raoul -

08/11/2012 08:01:29
Quote Anchor link
Dankjewel voor je reactie op Wouter. Heb nu op DomainObjectAbstract en DomainObjectException dit staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
namespace Whear\DomainObject;
// ...
?>

Maar de User.php doet nog steeds irritant, krijg nog steeds de error:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Fatal error: Class 'Whear\DomainObject\DomainObjectAbstract'


Hier mijn code van User.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

namespace Whear\User;

class User extends \Whear\DomainObject\DomainObjectAbstract
{
    protected $_data = array('username' => 'Raoul', 'password' => 'test');
}

?>


Die \ bij de extends moet ik er wel bij zetten want anders doet hij als namespace:
\Whear\User\Whear\DomainObject\DomainObjectAbstract
 
Wouter J

Wouter J

08/11/2012 10:07:35
Quote Anchor link
Je laadt de klasse wel in?

En inderdaad, als je een namespace gewoon zo in je script gebruikt moet je de \ wel gebruiken. Al raad ik je aan alles in use statements te zetten, behalve de klasse in de root namespace.
 
- Raoul -

- Raoul -

08/11/2012 17:07:33
Quote Anchor link
Ik laad alle klassen in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

require 'lib/Whear/User/User.php';
require 'lib/Whear/DomainObject/DomainObjectAbstract.php';
require 'lib/Whear/DomainObject/DomainObjectException.php';

$user = new Whear\User;
?>
Gewijzigd op 08/11/2012 17:16:14 door - Raoul -
 
Wouter J

Wouter J

08/11/2012 17:17:16
Quote Anchor link
Je laat User voor DomainObjectAbstract in, daardoor krijg je de error in User. Beter is het om een autoloader te gebruiken, en anders goed nadenken over de volgorde waarin je ze requried.
 
- Raoul -

- Raoul -

08/11/2012 17:18:00
Quote Anchor link
Goed gezien, bedankt Wouter! Even zoeken achter een autoloadertje die werkt met verschillende directories zoals bij mij:
Afbeelding
Gewijzigd op 08/11/2012 17:22:39 door - Raoul -
 
Wouter J

Wouter J

08/11/2012 17:26:19
Quote Anchor link
Gebruik de PSR-0 standards, en dat doe je al, en je kan hun autoloader gebruiken. Of die van Symfony of Zend of pak die van Composer. Eigenlijk is elke hedendaagse autoloader gemaakt voor meerdere directories.
 
- Raoul -

- Raoul -

08/11/2012 17:35:52
Quote Anchor link
Bedankt! Moet ik die autoloader in een apart bestand zetten of mag dat gewoon in mijn index blijven staan?
En als het in een ander bestand moet, waar moet dat dan? In welk mapje? Iets als /lib/Whear/Autoloader/Autoloader.php?
Dat is dan wel weer lelijk, want het is geen class en ook al is het een class, het is geen OO.
 
Wouter J

Wouter J

08/11/2012 17:37:36
Quote Anchor link
Je kan het op verschillende plekken doen:
- Composer plaatst hem standaard in vendors/autoloader.php
- Symfony2.0 heeft hem in vendors/Symfony/Components/ClassLoader/Autoloader.php staan

Je moet de klasse sowieso in een apart bestandje zetten, waar je hem zet mag je helemaal zelf weten.
 



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.