| Autor | Zpráva | ||
|---|---|---|---|
| JohnyEnglish Profil * |
#1 · Zasláno: 12. 5. 2010, 20:36:45
Dobrý den,
začínám se učit objektové programování v PHP a potřeboval bych zkontrolovat kód. Mám kód který zapíše data do databáze - class UlozObrazek{
var $ip;
var $user;
var $rand;
var $img;
function save(){
$this->sql = "INSERT INTO upload(jmeno,rand,ip,img) VALUES('".$this->user."','".$this->rand."','".$this->ip."','".$this->img."')";
mysql_query($this->sql);
return $this->Zprava = true;
}
}A vyvolávám ho - $img = new UlozObrazek;
$img->ip = $_SERVER['REMOTE_ADDR'];
$img->user = $_SESSION['Loged_user'];
$img->rand = rand('99999','99999999999');
$img->img = AbsoluteUri;
$img->save();
Myslím si že toto není nejlepší řešení, ale ani nejhorší :). Pokud by někdo mohl poradit co dělám kdyžtak špatně. Děkuji |
||
| happy Profil |
#2 · Zasláno: 12. 5. 2010, 21:06:43 · Upravil/a: happy
var $rand; -> "var"uz se uz nepoziva to bylo za casu php4 - misto toho se dava viditelnost (public, private, protect)
jinak nemusis ty veci nakhle nastavovat muzes normalne napsat public $ip = $_SERVER['REMOTE_ADDR']; //omlouvam se tohle nejde myslel jsem ze nejdou prirazovat jen funkce ale nejdou i dynamicke veci. nebo si je automaticky nastav v __construct (metoda co se automaticky spousti po vytvoreni instance) pak udelas jen img = new UlozObrazek; $img->save(); $this->neco pouzivej jen kdyz si to neco ve tride definujes. to znamena kdyz chces globalne pozivat ve tride $this->sql tak si na zacatek tridy napis public $sql. ale pokud mas tu promenou jen pro tu jednu danou metodu save() tak to pis uplne normalne jak v klasicke funkci bez this ... proste jen $sql
<?php
class UlozObrazek {
private $ip;
private $user;
private $rand;
private $img;
public function __construct() {
$this->ip = $_SERVER['REMOTE_ADDR'];
$this->user = $_SESSION['Loged_user'];
$this->rand = rand('99999','99999999999');
$this->img = AbsoluteUri;
}
public function save(){
$sql = "INSERT INTO upload(jmeno,rand,ip,img) VALUES('".$this->user."','".$this->rand."','".$this->ip."','".$this->img."')";
mysql_query($sql);
return true;
}
}
$img = new UlozObrazek;
$img->save();
|
||
| JohnyEnglish Profil * |
#3 · Zasláno: 12. 5. 2010, 21:20:08
happy:
Aha, rozumím, díky :). A co když budu chtít definovat něco pomocí toho $img->neco = "text" tak to pak bude jenom public $neco;? Díky |
||
| JohnyEnglish Profil * |
#4 · Zasláno: 12. 5. 2010, 21:27:35
Bohužel mi to nějak nejde,
mám class UlozObrazek {
public $ip = $_SERVER['REMOTE_ADDR'];
public $user = $_SESSION['Loged_user'];
public $rand = rand('99999','99999999999');
public $img = AbsoluteUri;
public function save(){
$this->sql = "INSERT INTO upload(jmeno,rand,ip,img) VALUES('".$this->user."','".$this->rand."','".$this->ip."','".$this->img."')";
mysql_query($this->sql);
return $this->Zprava = true;
}
}A hlásí to Parse error: syntax error, unexpected T_VARIABLE in D:\Projekty\sdilejte2\sdilejte\engine.php on line 22 a řádek 22 je public $ip = $_SERVER['REMOTE_ADDR']; |
||
| happy Profil |
upravil jsem prvni prizpevek.
do promenych nelze prirazovat funkce!!! public $rand = rand('99999','99999999999'); tohle proste nejde proto se to nastavuje vte metode construct. a bohuzel nejdou i ty dynamicke public $ip = $_SERVER['REMOTE_ADDR']; - osobne ani nevim proc tohle prozmenu nejde. jinak tam muzes veci prirazovat klasicky public $ip = 'neco'; jinak proste pokud chces nektere promene pouzivat mezi metodami ve tride tak na zacatku tridy vytvoris tu promenou pomoci treba private $ip; a pak v kterekoli metode ve tride muzes promene neco priraadit pomoci $this->ip = neco nebo ji treba vypsat pomoci echo $this->ip (zkus si misto toho this predstavit jmeno tridy) pokud budes promene definovat jako public muzes knim pristupovat i mimo tridu. pokud jako private budou dostupne jen pro metody v ramci tridy Moderátor Majkl578: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
|
||
| JohnyEnglish Profil * |
#6 · Zasláno: 12. 5. 2010, 21:31:21
Aha, super už to chápu. Díky moc :)
|
||
|
Časová prodleva: 15 let
|
|||
0