Goeie avond mensen,

Ik ben pas bezig met oop scripten.
en ik zou graag reacties willen hebben van wat ik goed doe en wat ik fout doe in mijn scripts
Het zijn werkende scriptjes.
<?PHP
class Profiel {
function getnaam($id) {
//Input Controleren.
if(!is_array($id) || count($id) {
return false;
}

//Data ophalen
$query = "select 'naam' from 'gebruikers' where 'id' = '$id'";
$result = mysql_query($query);

//Controleren als qeury werkt
if(!$result) die("Qeury Werkt niet. " . mysql_error());

//Info ophalen uit db als gevonden is
$naam = mysql_result($result, 0);

//Naam weergeven
echo 'Gebruikersnaam:' . $naam . '<br />';
}
}
?>
en
<?PHP
class Combat{
function att($att) {
$aanval = round($att/5);
echo 'U deed '.$aanval.' Damage.<br />';
}
function wapenatt($wapenatt) {
$wapenaanval = round($wapenatt/13);
echo 'U deed '.$wapenaanval.' Damage Met u wapen.<br />';
}
function skil1($skil1) {
$skilaanval1 = round($skil1*1.5);
echo 'U deed '.$skilaanval1.' Damage Met u Skil1.<br />';
}
function skil2($skil2) {
$skilaanval2 = round($skil2*2.3);
echo 'U deed '.$skilaanval2.' Damage Met u Skil2.<br />';
}
function total($att, $wapenatt, $skil1, $skil2) {
$aanval = round($att/5);
$wapenaanval = round($wapenatt/13);
$skilaanval1 = round($skil1*1.5);
$skilaanval2 = round($skil2*2.3);
$total = ($aanval+$wapenaanval+$skilaanval1+$skilaanval2);
echo 'U deed '.$total.' Damage in totaal.<br />';
}
}
?>
dat is wel zo niels:)
ik zal er gaan opletten bij me scripts die nu maak of ga verbeteren
Nog meer tip's & trucs voor OOP?
ik hoor het graag of een Nederlandse tut om oop beter onder de knie te krijgen is erg gewenst
@Glenn..

Lees mijn vorige reactie eens..

"ik hoor het graag of een Nederlandse tut om oop beter onder de knie te krijgen is erg gewenst"

Laat pas geleden een lid van phphulp deze eens gemaakt hebben

http://phptuts.nl/view/45/

Verder een aantal tips:

- Veel blijven oefenen
- Gewoon hier op het forum vragen of je denkwijze, script goed is. Daarvoor dient dit forum.
- Veel blijven lezen
- Download een aantal frameworks om te kijken hoe hun het gedaan hebben. Een mooi framework in PHP5 om mee te beginnen is Zend Framework. Oftewel kijk af van andere mensen



@niels

ik zie nergens u reactie staan
maar bedankt voor de link ik ga hem ff goed lezen en uitwerken na mijn wens
Niels Kieviet op 13/07/2010 19:30:36

Is dit niet wat? Wel een beetje aanpassen naar jouw wens, en de database klassen maken, goede oefening misschien?

Verder moet je de naamgeving aanpassen en wat overzichtelijker programmeren. PHPDoc misschien een goed idee?

Verder kan je dit natuurlijk helemaal aanpassen, met foutenafhandeling ( exceptions ) en dergelijke. Succes!
<?php
/**
* Profile class
*/
class Profile
{
/**
* @var String
*/
private $name;

/**
* Constructor.
*
* @param String $unique_id
*/
public function __construct( $unique_id )
{
// Control input
if( isValid( $unique_id ) )
{
// Make new database
$database = new MySQL( );
// Connect
$database->connect( 'localhost', 'username', 'password', 'database' );
// Make query
$query =
"
SELECT
name
FROM
users
WHERE
id = '" .$database->addslashes( $unique_id ). "'
";
// Run the query
$database->query( $query );

}
}

/**
* Controls the input.
*
* @param String $unique_id
* @return Bool
*/
protected function isValid( $unique_id )
{
return ( ctype_digit( $unique_id ) );
}


}
?>


Nu wel?
De functie ctype_digit() wil graag een variabele van het type string anders zou het fout kunnen gaan dus:
<?php
return ( ctype_digit( (string)$unique_id ) );
?>
----

Is de methode isValid() alle nodig binnen je klasse? Zo ja maak deze dan private en niet protected. Alle methodes die private zijn beginnen bij mij met een _ dus dan zou het _isValid worden, vind ik duidelijker.

----

Een getal in je query hoef je niet te escapen.
Alleen de casten naar bijvoorbeeld in integer.

Dus:
<?php
$query =
"
SELECT
name
FROM
users
WHERE
id = '" . (int)$unique_id . "'
";

?>

Dit als extra beveiliging, als je vergeet $unique_id op inhoud te controleren.



arghhh, dubbel...
Ik zie meerdere dingen die verder uitgewerkt kunnen worden. Bij OOP gaat het vooral om uitsplitsen van je code. Zo heb je bijv een object Player, Character (die je weer kan extenden naar verschillende typen, warrior, mage of wat voor setting je ook zit).

voorbeeld:

<?php
class Character{

public $characterid = 0;

public $hp = 0;

public $strength = 0;

public $skill = 0;

public $status = 0;

private $database;

public function __construct($id = NULL){

if(!is_null($id)){
$this->db = database::getInstance('mysql');

/// haal speler op en assign vars
}
}

public function save(){
// object opslaan
}
}

class Mage extends Character{
//doe hier stuff voor mage
}

class Combat{

public function doDamage($characterid, $damage){

}

// nog meer combat functies
}

?>
Klopt, jullie hebben gelijk. Ik had er niet zo goed over nagedacht, en later komen steeds ideeën in mijn hoofd. Maar voor de TS moet het ook een uitdaging zijn vind ik.
Bedankt jurgen,

zoals jij een voorbeed geeft is voor mij het idee om een game te bouwen met damage en verschillende classes .
ik doe dit samen met een vriend van mij
en we wouden het eerst in normaal php schrijven(is wel makkelijker voor mij)
maar we dachten van nee we gaan het netter maken qua scripting en we gaan OOP gebruiken.
en die vriend van mij maakt ook AS3 scripts ervoor zoals een worldmap enz
Je kunt AS3 ook gewoon met PHP laten praten door een HTTP request te doen naar een pagina waar je waardes van ophaalt.

Reageren