Beste,

Ik ben nieuw met OO in php.
Ik heb van school een ebook gekregen en wat opdrachten en that's it. Verder moet je het maar uitzoeken.

De volgende opdrachten moet ik uitvoeren:

a. Zet de basis van een eenvoudige User class op.
b. Definieer een property (gebruikersnaam (username)) voor deze class. (public)
c. Voeg een get-method en een set-method toe.
d. Voeg een tweetal nieuwe objecten toe.
e. Laat de twee nieuwe objecten op het scherm afbeelden. (Harold en Albert)

En mijn code is als volgt:

<?php

class User
{
$Username;

function setName($Username)
{
$this->name = $Username;
}
function getName()
{
return $this->Name;
}
function _construct(){}
}

$Harold=new User()
$Albert=new User()

$Harold->setName('Harold');
$Albert->setName('Albert');


echo $Harold $Albert;

?>

Ik krijg echter de foutmelding:

Parse error: syntax error, unexpected '$Username' (T_VARIABLE), expecting function (T_FUNCTION) in D:\xampp\htdocs\php\userclass.php on line 5

Ik doe het precies zoals in het boek staat maar het werkt blijkbaar niet. Wat doe ik fout?
Je hebt dan de eigenschap private $Username, maar gebruikt daarnaast nog $this->name met een kleine letter en $this->Name met een hoofdletter. Dat zijn drie verschillende eigenschappen, die één eigenschap moeten worden.

Verder gebruik je de methode getName() nog nergens.


<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 'On');

class User
{
    private $Username;
    
    function setName($username)
    {
        $this->Username = $username;
    }

    function getName()
    {
        return $this->Username;
    }
}

$user_one = new User();
$user_two = new User();

$user_one->setName('Harold');
$user_two->setName('Albert');

echo '<p>First user: '  . $user_one->getName() . '</p>';
echo '<p>Second user: ' . $user_two->getName() . '</p>';
?>

Krijg nu dit:

Parse error: syntax error, unexpected '$Albert' (T_VARIABLE) in D:\xampp\htdocs\php\userclass.php on line 19


<?php
echo $Harold $Albert;
?>

Deze lijn klopt niet helemaal. Je moet of de 2 variabelen aan elkaar koppelen (met de "." operator), of je moet wat anders leuks doen. Maar nu heb je 2 variabelen die elkaar opvolgen zonder iets ertussen, dat kan in PHP niet.

Tevens echo je nu objecten, je kan alleen strings echoën, dus dat werkt ook niet. Ik denk dat je getName() wilt echoën.
Heb nu dit:

<?php

class User
{
public $Username;

function setName($Username)
{
$this->name = $Username;
}
function getName()
{
return $this->Name;
}
function _construct(){}
}

$Harold=new User()
$Albert=new User()


$Harold->setName('Harold');
$Albert->setName('Albert');


echo $Harold->getName();
echo $Albert->getName();

?>

Parse error: syntax error, unexpected '$Albert' (T_VARIABLE) in D:\xampp\htdocs\php\userclass.php on line 19



18 en 19 mist een punt-komma aan het eind.
- Aar - op 12/05/2014 11:18:00

Je moet ook een property aangeven voor $Username.
Zie ook: http://www.php.net/manual/en/language.oop5.properties.php

Dus public $Username;

Als ik de leraar zou zijn zou je bonuspunten verdienen met het declareren van een private $username. Helemaal als je er dan het volgende commentaar bijzet:

"class variabele als private gedeclareerd, maar het property is public door de public getter en public setter."

Dan doe je het en goed en je geeft aan te begrijpen dat er een verschil is tussen een property en een variabele in een class. Public property is prima, maar een public class variabele is een slecht begin.

- Aar - op 12/05/2014 12:25:11

18 en 19 mist een dubbele punt aan het eind.


een ; bedoel je neem ik aan :P?
Kreeg eerst weer een foutmelding, maar heb het nu werkend!

<?php

class User
{
public $Username;

function setUsername($Username)
{
$this->Username = $Username;
}
function getUsername()
{
return $this->Username;
}
function _construct(){}
}

$Harold=new User();
$Albert=new User();


$Harold->setUsername('Harold');
$Albert->setUsername('Albert');


echo $Harold->getUsername();
echo $Albert->getUsername();

?>



function setUser en de rest veranderd in setUSername en getUsername

Reageren