Gå til innhold

lop

Medlemmer
  • Innlegg

    32
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av lop

  1. Hallo,

    Har nå programmert procedural PHP i et år snart (sånn amatørmessig), og har nå begynt å snuse på OOP det siste halvåret.

    Så har en del spørsmål jeg skulle hatt noen ordentlige svar på! Har lest mye og sett mange videoer om emnet, men alle sier noe forskjellig. Så er usikker!

     

    Når skal jeg bruke OOP i kodene mine?

    Når skal jeg bruke static methods, og når skal jeg bruke vanlig?

    Er det noen vits å bruke OOP i all kode, eller en kombinasjon av OOP og procedural?

     

    Har sikkert flere spørsmål, så tar gjerne imot linker/eller gode forklaringer om emnet! Bare de er rettet mot nyeste versjoner av PHP og ikke 3 & 4 og tidlig 5!

     

    Håper på svar icon_biggrin.gif

     

    PS: Ikke bruk denne tråden som en diskusjons tråd om hva som er rett og galt osv... har opplevd det før icon_lol.gif

  2. header('location: fil.php?mld=' urlendcode($message));

    echo urldecode($_GET['mld'])

    Eneste superenkle måte jeg kan komme på :p

     

     

    Ja, men vil ikke at det skal synes...

     

    Det er også mulig å bruke sessions

     

    fil1.php

    session_start();
    
    $_SESSION['message'] = 'Du har nå lagt noe i databasen';
    
    header('Location: fil2.php');

     

    fil2.php

    session_start();
    
    echo $_SESSION['message'];

     

    Men da vil jo meldingen vise seg hver gang brukeren besøker den siden utenom at brukeren blir sendt via en annen side.

  3. Driver å jobber med en webside, og har et script som jeg legger noe inn i en database. Så hvis det går bra blir brukeren sendt til en annen side og der vil jeg at brukeren skal få en melding på skjermen at han la noe i databasen. Hvis dere forstår meg!

     

    Eksempel:

    Legg i databasen:

    //database greier her
    if ($sql){
    $message = "Du har nå lagt noe i databasen";
    }
    

    Så den andre siden:

    echo $mld;
    

     

    Dårlig eksempel men...

     

     

    -lop

  4. Men hvorfor kalle private variabler $_variabelNavn, er det for å holde styr på dem?
    Ja, og det var mest aktuelt før når man kodet i OOP type PHP4 hvor man ikke hadde mulighet til å deklarere variabler som public/private/protected.

     

    Da kan jeg jo bare egentlig fortsette å bruke private/public/protected, da bruker jeg da ihvertfall php sine standarer.

  5. Hvorfor en egen klasse for kill?

    Om du på død og liv skal ha egen klasse for det, gjør den static for guds skyld.

     

    Static brukes der du ikke trenger å opprette ett nytt objekt, det opprettes en gang, siden bruker alle instanser den.

     

    Funksjoner som utføres går ofte greit i static klasser, mens objekter du skal holde styr på, f.eks brukere, ikke kan det (enkelte private statics kan likevel være greie, f.eks til å holde styr på antall objekter).

     

    For å kommentere direkte på koden din.

    Hvorfor er $victim public?

    Hvorfor er du inkonsekvent i navngiving av funksjoner og variable?

    Jeg syns det er greit å navngi private variabler slik: $_variabelNavn;,

    og private funksjoner slik: void funksjonsNavn(){},

    public funksjoner slik: void FunksjonsNavn();

     

     

    Uansett, hele den klassen din kan gjøres static, så holder det å kalle den med Kill->ByUserName("UserName", Bullets), (eller noe i den stilen) uten å opprette ny instans.

     

    Skjønte det må å la $victim være private. Den blir bare brukt av klassen.

    Men hvorfor kalle private variabler $_variabelNavn, er det for å holde styr på dem?

    Og hva betyr void? Hva står det for?

  6. Hei!

    Har nå akkuratt begitt meg ut på Objekt Orienteert Programmering og trenger en form for bekreftelse at det jeg gjør er riktig!

     

    Så hvordan kan jeg forbedre denne kode snippen "programmerings messig" for at den er helt topp!

     

    class Kill{
    
    public $victim; //Offeret
    private $bullets; //Kuler som blir brukt
    private $healthVictim=1; //helsa til offeret
    public $shots; //skudd som treng for drapet
    
    function __construct($victim, $bullets){
    
    	$this->victim = $victim;
    	$this->bullets = $bullets;
    
    	$this->ShootsNeeded();
    	//sjekke om det blir skutt like mange elelr flere skudd for å drepe
    	if ($this->bullets >= $this->shots){
    		echo "Du drepte " .$this->victim. " med ". $this->bullets ." stk kuler!";
    	}else{
    		//hvis det ikke var nok, regn ut hvor mye offeret har igjen av liv %
    		$this->healthLoss();
    		echo "Du skadet bare ".$this->victim.", han/hun har nå ". $this->healthVictim ."% liv igjen";
    	}
    }
    
    //Kalkuler antall skudd som trengs for å drepe spilleren
    private function ShootsNeeded(){
    	//For 1% helse trengs det 10 kuler
    	return $this->shots = $this->healthVictim * 10;
    }
    
    //Kalkuler hvor mange liv victim tapte
    private function healthLoss(){
    	//Vi må dele på 10 siden 1% helse tilsvarer 10 kuler for å få en riktig prosent verdi ut igjen.
    	return $this->healthVictim = ($this->shots - $this->bullets) / 10;
    }
    
    }
    
    // 
    $kill = new Kill("Navnet", "1000");
    
    ?>

     

    Og så lurer jeg egentlig på når jeg kan bruke Static i stedet for $var = new Klasse();?

     

    Håper noen vil hjelpe meg med usikkerheten!

    Håper også noen kan poste noen bra ressurser på å lese meg opp på mer OOP

     

    - Lars Otto

     

    Da har jeg laget en ny klasse som er statisk fra de svar jeg har fått, hva mener dere om den "programmerings messig"?

    class Kill{
    
    private static $victim; //Offeret
    private static $victim_health=100; //Helsa til offeret
    private static $shots; //Skudd som trengs for å drepe offeret
    private static $bullets; //Skudd som blir brukt på å drepe offeret.
    
    public static function by_user_name($username, $bullets){
    
    	self::$victim = $username;
    	self::$bullets = $bullets;
    
    	//utføre drapet
    	if (!empty(self::$victim) && !empty(self::$bullets)){
    		self::complete_kill();
    	}else{
    		echo "Ugyldig!";
    	}
    
    }
    
    //Utfører drapet
    private static function complete_kill(){
    
    	self::shoots_needed();
    	if (self::$bullets >= self::$shots){
    		echo "Du drepte ". self::$victim .", du brukte ". self::$bullets ." stk kuler.";
    	}else{
    		self::health_loss();
    		echo "Du skadet bare ". self::$victim. ", han/hun har nå ". self::$victim_health ."% liv igjen";
    	}
    
    }
    
    //Regner ut hvor mange skudd som trengs for å drepe offeret
    private static function shoots_needed(){
    	//For at offeret skal miste 1% helse må det bli brukt 10 skudd.
    	return self::$shots = self::$victim_health * 10;
    }
    
    //Regner ut hvor mye helse offeret har igjen etter det har blitt forsøkt drept.
    private static function health_loss(){
    	return self::$victim_health = (self::$shots - self::$bullets) / 10;
    }
    
    }
    
    Kill::by_user_name("Navnet", "1000");
    
    ?>

  7. Men lurer på hvordan jeg kan lage en funksjon, så jeg slipper å ha hundre slike koder med javascript for bare enkle operasjoner.

     

    Jeg skal ha flere valg som er basert på div-tagger!

    For eks.

    1 div for: Slett post 1

    2 div for: Slett post 2

    osv

     

    Så jeg kan bruke funksjonen til å bare for eks

    onclick="utfør(1)"

    Så skal det submitte en id som skal opereres i php scriptet mitt!

  8. Hei!

     

    Jeg har akkuratt begynnt på Vg1 Elektro, og vi er en så kalt dataklasse, så vi har ikke bøker eller noe sånt.

     

    Men at det jeg lurer på er om noen der ute har noen lenker til internettsider som kan være fine for meg som skal bli Elektrikker.

     

    Så jeg vil gjerne sitt litt hjemme og lese om faget og litt forskjellig.

     

    Noen som har?

  9. Jeg har et spørsmål om litt scripting av sjanser.

     

    Brukeren har en sjanse tall. for eks (40) som da er 40 %.

    Så skal brukeren utføre et spill der en får erfaring av å spille. Når han har gjort en del vellykkete spill så øker sjansen hans for å greie det igjen. Men taper han mister han sjanse.

     

    Noen som har noe peiling på hvordan jeg skal få til dette?

  10. include "db_config.php";
    //Get Ip from user
    $UserIp = $_SERVER['REMOTE_ADDR']; 
    
    //Get Date NO
    setlocale( LC_ALL, 'nb_NO', 'NOR' );
    $time = strftime( '%H' );
    //$time = $time + 2;
    $minutt = strftime( '%M' );
    $dato = strftime( '%A %d. %B %Y' ); 
    $dato = ucfirst($dato); 
    
    $Date = "$dato - $time:$minutt";
    
    
    if (isset($_POST['submit'])){ //Cheking if submit is pushed.
    //Get Users Input
    $UserName = $_POST['name'];
    $UserEmail = $_POST['email'];
    $UserTitle =  $_POST['title'];
    $UserText = $_POST['text'];
    
    //Security
    #htmlspecialchars & Stripslshases. To prevent user modify script.
    $UserName = htmlspecialchars(stripslashes($UserName));
    $UserEmail = htmlspecialchars(stripslashes($UserEmail));
    $UserTitle = htmlspecialchars(stripslashes($UserTitle));
    $UserText = htmlspecialchars(stripslashes($UserText));
    
    #Real_escape_string. To prevent a user hacking db
    $UserName = mysql_real_escape_string($UserName);
    $UserEmail = mysql_real_escape_string($UserEmail);
    $UserTitle = mysql_real_escape_string($UserTitle);
    $UserText = mysql_real_escape_string($UserText);
    
    //check IF user has forgotten to input text in the forms.
    if (empty($UserName)){
    echo "Du har ikke skrevet inn ditt navn.";
    }elseif (empty($UserEmail)){
    echo "Du har ikke skrevet inn din E-post Addresse.";
    }elseif (empty($UserTitle)){
    echo "Du har ikke skrevet inn en Tittel.";
    }elseif (empty($UserText)){
    echo "Du har ikke skrevet inn noe tekst.";
    }
    
    $InsertMySql = "INSERT INTO $MysqlTable (id, name, email, title, text, ip, date)VALUES('', '$UserName', '$UserEmail', '$UserTitle', '$UserText', '$UserIp', '$Date')";
    
    $QuerySQL=mysql_query($InsertMysql);
    
    if ($QuerySQL){
    echo "Du har lagt til et nytt Innlegg";
    }else{
    echo "Beklager! Det har oppstått en feil";
    }
    
    
    
    }
    
    
    
    ?>

     

    Får bare opp:

    beklager ! det har oppstått en feil.

     

    Har prøvd alt men funker ikke

×
×
  • Opprett ny...