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?
Jacco Engel op 12/05/2014 12:54:00

[quote="- 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?
[/quote]
Jep... :P
volgende probleem:

Moet nu een subclass aanmaken(premium_user) deze moet de properties username en ID krijgen. Vervolgens een object aanmaken en tonen.

Heb het volgende:

<?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();




class Premium_user extends User
{
public $Username;
public $ID;

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

function setID($ID);
{
$this->$ID;
}
function getID()
{
return $this->ID;
}
}
$Rick=new Premium_user();

echo $Rick->getUsername();

?>



FOUT:

Fatal error: Non-abstract method Premium_user::setUsername() must contain body in D:\xampp\htdocs\php\userclass.php on line 37

function setUsername($Username);

Kijk een goed naar het eind van die regel.

Verder is er geen reden om getters en setters te hebben voor public properties. Maak ze dus private/protected.
$Username, methode setUsername() en methode getUsername() erf je al van User, deze hoef je dus niet opnieuw aan te maken.
De ; moest er niet achter.

Heb de de functions set en get username weg gehaald, maar moet ik dan wel van Premium_user een property maken? met een get en set?
Premium_user is een class, geen property.
oh inderdaad, domme opmerking sorry.

[size=xsmall]Toevoeging op 12/05/2014 19:15:57:[/size]

Heb deze ook werkend gekregen naar wat gepuzzel.
Ik was dit vergeten; $Rick->setUsername('Rick');
Kon de method van setUsername en getUsername inderdaad gewoon weer gebruiken!
Super dat iedereen zo behulpzaam is. Ben namelijk echt een leek

Reageren