Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  PHP5 OOP küsimused märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
mine lehele eelmine  1, 2
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
raido357
HV veteran

liitunud: 26.09.2002



Autoriseeritud ID-kaardiga
sõnum 16.10.2009 00:54:27 vasta tsitaadiga

Eespool olevad postitused on küll vanad aga miks mitte kasutada MySQL Improved varianti ja prepared statemente ?
Kommentaarid: 78 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 70
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 16.10.2009 08:51:43 vasta tsitaadiga

kuidas need käivad
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 16.10.2009 09:54:19 vasta tsitaadiga

ja mis asjad täpselt need exceptionid on? manualis nagu natukene oli kirjas, kuid ei saa hästi pihta
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 16.10.2009 10:07:08 vasta tsitaadiga

Veateated.
_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 16.10.2009 10:59:51 vasta tsitaadiga

exceptionitest veel. keegi oskab seletada throw, catch jne... manualis erit nagu kirjas pole.

kas üldiselt oleks parem neid kasutada, selle lihtsa die() asemel?

      if(empty($this->text))
         throw new Exception('jama');


see annab mulle sellise errori:

Fatal error: Uncaught exception 'Exception' with message 'jama' in C:\xampp\htdocs\uus\kala.php:14 Stack trace: #0 C:\xampp\htdocs\uus\kala.php(19): Proov->ValidateText() #1 C:\xampp\htdocs\uus\kala.php(27): Proov->PrintText() #2 {main} thrown in C:\xampp\htdocs\uus\kala.php on line 14

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 16.10.2009 11:01:12 vasta tsitaadiga

http://php.net/manual/en/language.exceptions.php
Example 1 näitab kenasti ära mõtte.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 16.10.2009 11:03:05 vasta tsitaadiga

try {
    echo inverse(5) . "\n";
    echo inverse(0) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}


mis asja siin tehakse? try, catch jne

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 16.10.2009 11:23:27 vasta tsitaadiga

Kui ühtegi exceptionit ei vista (viga), siis catch osa ei rakendu, kui visatakse exception, siis saad seda catch lõigu sees töödelda, antud juhul väljastatakse exceptioni sõnum (getMessage()).
Otsetõlkes on need kaks väljendit siis proovi ja püüa, kui ta ei suuda edukalt proovi lõiku teha, siis püütakse error kinni ja php scripti käivitumist ei peatata, saad kenasti kasutajale errori saata.
tsitaat:
If an exception is not caught, a PHP Fatal Error will be issued
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
inzinz
HV kasutaja

liitunud: 26.01.2005




sõnum 16.10.2009 14:41:53 vasta tsitaadiga

Umm, hetkel tundub see asi siin jalgratta leiutamisena ja mugavuse aknast väljaviskamisena et mingit huvitavat asja proovida.
Mis on näiteks häda sellel, et panna verifytext tagastama true ja false ja seda hiljem kontrollida ?

function verifyText() {
return !empty($this->text);
}

function printText() {
if(!$this->VerifyText()) echo 'tekst puudub';
else echo $this->text;
}

Antud moodus on ju palju mugavam ja loogilisem kirjutada kui nii:
function verifyText() {
if empty($this->text) throw new Exception('tekst puudub');
}

function printText() {
try{
$this->VerifyText();
echo $this->text;
}catch{
echo 'tekst puudub';
}
}

Exceptionitega koodi on palju raskem lugeda ja hiljem hallata. Exceptionitel on oma aeg ja koht, aga mingi taoline lihtlabane kontroll ei ole nüüd küll selline koht... (näiteks redirecti tegemine redirectexception klassiga ja selle püüdmisega on täitsa ok kasutus, aga iga pisikest kontrolli niimoodi "paremaks" teha üritades on suht pointless...)

_________________
Upload.ee - eestimaine failiupload
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 16.10.2009 15:54:28 vasta tsitaadiga

ma tegelt kirjutan siin ühe gd classi, kus siis tahan kontrollida, et $this->image mis on loodud imagecreatefrom abil on olemas!
kuna see peab 100% olema, siis die('pilt puudub!') oleks ok ja mingit muud keemiat vaja pole?

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
inzinz
HV kasutaja

liitunud: 26.01.2005




sõnum 16.10.2009 20:21:10 vasta tsitaadiga

No, minu meelest nii hardcore lähenemist ei ole ikka, et kuskil klassi sees teed die('käi kurele'); kui ühte pilti pole, kuna sellisel juhul sa pead seda klassi hakkama muuta kui tahad teist teksti kuvada jne. Ja kui tahad erinevat teksti kuvada eri kohtadest kasutades, siis on jälle jama majas.

Mõistlikum ja hiljem paremini kasutatav lahendus on see, et sa ise peale pildi laadimist ja enne klassi edasist kasutamist kontrollid läbi funktsiooni IsImageLoaded() {return !empty($this->image);} staatust vms. Niimoodi on põhiklass asjalik ja minimaalne, ja seda kasutav kood ise juba kontrollib ja majandab errorite või hoiatuste kuvamisega, või äärmisel juhul lihtsalt ignoreerib errorit ja proovib uuesti tegevust teha jne jne. Sa ei saa kõiki võimalikke erijuhte baasklassi toppida vaid ikkagi nende koht on seal koodis, mis seda baasklassi kasutab.
Kui on vajadus kasutajale html lehte ilusama error teatega näidata, siis klassi seest tulev die muudab selle võimatuks, aga kõrgemal koodis pildi laadimist kontrollides, on parem kontroll olukorra üle.

_________________
Upload.ee - eestimaine failiupload
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
raido357
HV veteran

liitunud: 26.09.2002



Autoriseeritud ID-kaardiga
sõnum 18.10.2009 19:45:52 vasta tsitaadiga

keevitaja kirjutas:
kuidas need käivad


SELECT:


$yhendus = new mysqli("localhost", "kasutaja1", "salasona1", "minuDB");
$kask = $yhendus->prepare("SELECT id, nimi, asi FROM naide");
$kask->bind_result($id, $nimeke $asjandus);
$kask->execute();

while($kask->fetch != NULL) {
  echo $id." / ".$nimeke." / ".$asjandus
}

$yhendus->close();



INSERT:


$yhendus = new mysqli("localhost", "kasutaja1", "salasona1", "minuDB");
$kask = $yhendus->prepare("INSERT INTO naide (nimi) VALUES(?)");
$kask->bind_param("s", $_POST[uusNimi]);   //s = string
$kask->execute();
$yhendus->close();


mysql_real_escape_string kasutus ei ole vajalik, sellisel viisil.
Kommentaarid: 78 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 70
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 19.10.2009 10:22:23 vasta tsitaadiga

no ma kasutan sqlit nii:

php:
  1. class Mysql
  2. {
  3.         private $link;
  4.        
  5.         private function sformat($arg_list)
  6.         {
  7.                 $query = $arg_list[0];
  8.                
  9.                 for($i = 1;$i < count($arg_list);$i++) $new_list[] = $arg_list[$i];
  10.                        
  11.                 $string = vsprintf($query, $new_list);
  12.                
  13.                 return $string;
  14.         }
  15.        
  16.         public function connect()
  17.         {
  18.                 $this->link = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS);
  19.                 return mysql_select_db(SQL_DB, $this->link);
  20.         }
  21.        
  22.         public function query($query)
  23.         {
  24.                 return mysql_query($query, $this->link);
  25.         }
  26.        
  27.         public function squery()
  28.         {
  29.                 $query = $this->sformat(func_get_args());
  30.                
  31.                 return $this->query($query);
  32.         }
  33.        
  34.         public function assoc($sql)
  35.         {
  36.                 return mysql_fetch_assoc($sql);
  37.         }
  38.        
  39.         public function num_rows($sql)
  40.         {
  41.                 return mysql_num_rows($sql);
  42.         }
  43.        
  44.         public function insert_id()
  45.         {
  46.                 return mysql_insert_id();
  47.         }
  48. }
  49. $db = new Mysql;
  50. $db->connect();
  51.  
  52. $q = "select id from %s where name='%s'";
  53. $r = $db->squery($q, $id, $name);

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
lehm2
Kreisi kasutaja


liitunud: 19.09.2004



Autoriseeritud ID-kaardiga
sõnum 19.10.2009 15:07:42 vasta tsitaadiga

Aga milleks, leiutada ratast ? icon_rolleyes.gif
_________________
Piilu siia, progreja!
Vajad abi Node.JS-ga ?
Võta ühendust !
Kommentaarid: 15 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 13
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Celos
Kreisi kasutaja
Celos

liitunud: 23.08.2005



Autoriseeritud ID-kaardiga Online
sõnum 19.10.2009 17:58:07 vasta tsitaadiga

lehm2 kirjutas:
Aga milleks, leiutada ratast ? icon_rolleyes.gif


Eks õppimise eesmärgil võib endale igasuguseid ülesandeid püstitada.
Kommentaarid: 17 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 16
tagasi üles
vaata kasutaja infot saada privaatsõnum
inzinz
HV kasutaja

liitunud: 26.01.2005




sõnum 21.10.2009 11:08:48 vasta tsitaadiga

for($i = 1;$i < count($arg_list);$i++) $new_list[] = $arg_list[$i];

Antud koht lausa karjub SQL injectionit näkku icon_biggrin.gif
Korrektne oleks
$new_list[] = mysql_real_escape_string($arg_list[$i]);


Probleemiks siis kõige tavalisem user inputi usaldamine, näidiskood ärakasutamiseks:

//$_GET['name'] väärtuseks on: olematunimiplapla' union SELECT username,password FROM users WHERE id='2'#
$name = $_GET['name'];
$q = "select väli1,väli2 from mingitabel where name='%s'";
$r = $db->squery($q, $name);
//päring mis baasi tehakse on järgnev
//select väli1,väli2 from mingitabel where name='olematunimiplapla' union SELECT username,password FROM users WHERE id='2'#'
//# kommenteerib välja kõik järgnevad märgid mis muudab päringu stringi korrektseks

Antud näite põhjal valitakse baasist hoopis teisest tabelist väärtuseid kui progejal plaanis oli.
Mitte kunagi ei tohi inputi usaldada, pisut oskajama häkkeri kätes tähendab progejapoolne usaldavus veebilehe või lausa terve serveri metsa keeramist, olenevalt kui laialdaselt ja kui kriitilistes kohtades sellised input usaldamise kohad koodis levinud on

_________________
Upload.ee - eestimaine failiupload
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 30.10.2009 19:32:25 vasta tsitaadiga

mul nüüd lsb (alates PHP 5.3) küsimus:

php:
  1. <?php
  2. class A {
  3.     protected static $text;
  4.    
  5.     public static function init($one = '', $two = '') {
  6.         $obj = new self;
  7.        
  8.         $obj->one = $one;
  9.         $obj->two = $two;
  10.         $obj->static_text = static::$text;
  11.        
  12.         return $obj;
  13.     }
  14.    
  15.     public function output_text() {
  16.         echo 'siin peaks olema tekst: ' . static::$text;
  17.     }
  18. }
  19.  
  20. class B extends A {
  21.     protected static $text = 'see on staatiline tekst';
  22. }
  23.  
  24. $b = B::init('see on esimine', 'see on teine');
  25.  
  26. echo "esimine: {$b->one}<br>teine: {$b->two},<br>static_text: {$b->static_text}<hr>";
  27.  
  28. $b->output_text();
  29. ?>


kuhu kaob $b->output_text() väljastades see static::$text väärtus??? mis mul valesti on kirjutatud?

samas B::output_text(); jälle töötab

see kah on ok:
$b = new B;
$b->output_text();

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 30.10.2009 20:28:22 vasta tsitaadiga

leidsin lahenduse! äkki kellelegi abiks:

    public static function init($one = '', $two = '') {
        $obj = new static;

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 16.04.2010 15:52:26 vasta tsitaadiga

SELECT:


$yhendus = new mysqli("localhost", "kasutaja1", "salasona1", "minuDB");
$kask = $yhendus->prepare("SELECT id, nimi, asi FROM naide");
$kask->bind_result($id, $nimeke $asjandus);
$kask->execute();

while($kask->fetch != NULL) {
  echo $id." / ".$nimeke." / ".$asjandus
}

$yhendus->close();


$kask->bind_result($id, $nimeke $asjandus);
kas seda rida selliselt ei saaks kirjutada, et need väljade muutuja nimetused tekivad automaatselt väljade nimetuste järgi

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mark11
HV vaatleja

liitunud: 28.01.2006




sõnum 16.04.2010 18:18:05 vasta tsitaadiga


function wrap_it($obj, $arr) { call_user_func_array(array($obj, "bind_result"), compact($arr)); }
$fields = array("id", "nimi", "asi");
$kask = $yhendus->prepare("SELECT " . implode($fields, ",") . " FROM naide");
wrap_it($kask, $fields);

põhimõtteliselt selline värk töötaks küll.
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 16.04.2010 20:32:33 vasta tsitaadiga

krt, see tundub kuidagi liiga keeruline. siis võiks ise ju neid querysid kontrollida.

põmst ma tahaks ainult, et need queryd oleks prepared (eelvormindatud???). fetchida võiks ka muud muudi äkki?

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 22.04.2010 23:12:01 vasta tsitaadiga

klge olete te kindel selle mysqli prepared statementide headuses? ma siin üritasin nüüd asjast sotti saada ja jõudsin sellisele tulemusele:

php:
  1. <?php
  2. class DB {
  3.     function __construct() {
  4.        $this->connection = new mysqli('localhost', 'root', '', 'test');
  5.     }
  6.    
  7.     function prep_query($query) {
  8.         $this->stmt = $this->connection->prepare($query);
  9.     }
  10.    
  11.     function bind_params($params) {
  12.         $referenced_params = array();
  13.        
  14.         foreach($params as $key => $value) {
  15.             $referenced_params[] = &$params[$key];
  16.             $param_types .= $this->get_param_type($value);
  17.         }
  18.        
  19.         array_unshift($referenced_params, $param_types);
  20.        
  21.         call_user_func_array(array($this->stmt, 'bind_param'), $referenced_params);
  22.         $this->stmt->execute();
  23.     }
  24.    
  25.     function exec_query($query, $params) {
  26.         $this->prep_query($query);
  27.         $this->bind_params($params);
  28.     }
  29.    
  30.     function get_param_type($param) {
  31.         switch(gettype($param)) {
  32.             case 'integer':
  33.                 $param_type = 'i';
  34.                 break;
  35.             case 'double':
  36.                 $param_type = 'd';
  37.                 break;
  38.             case 'string':
  39.                 $param_type = 's';
  40.                 break;
  41.             default:
  42.                 $param_type = 'b';
  43.                 break;
  44.                
  45.         }
  46.        
  47.         return $param_type;
  48.     }
  49. }
  50. $db = new DB();
  51. $db->exec_query("insert into proov(yks, kaks) values(?, ?)", array('see ondsf proov', 43424234));
  52. ?>


ma ei tea, kas nüüd on kõik nii nagu peab, aga igatahes muud moodi ma ei suutnud. eriti nõme on, et parameetrid peab muuta viideteks ja peab muutujate tüübid ette andma. muidugi see bindimine on ka oma olemuselt juba nõme

ehk siis selle minu klassi mõte on see, et ei peaks iga queryga mingit ullu lugulaulu kirjutama

edit: ja kui nüüd hakata veel mõtlema mark11 näite peale, kuidas resulte kätte saada, siis tuleb ikka päris nutu maitse suhu

või kus seda mysqli preparet krt kasutama peaks?

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!


viimati muutis keevitaja 23.04.2010 00:14:34, muudetud 1 kord
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 22.04.2010 23:30:50 vasta tsitaadiga

keevitaja kirjutas:
klge olete te kindel selle mysqli prepared statementide headuses?


Puutusin ka kunagi kokku selle mysqli prepared statementidega. Peale mõningast mässamist jõudsin järeldusele, et nii haiget API-it pole lihtsalt võimalik normaalselt kasutada - lihtsam kui seda kasutada on kirjutada ise andmebaasiklass, mis neid prepared statemente sulle simuleerib kasutades lihtsaid tekstilisi päringuid. Seda ma ka toona tegin.

Ma arvan, et see mysqli liides on algselt kirjutatud C jaoks, kus kõik need viidad jms igati mõttekad on, ja siis on keegi hea inimene selle üks-ühele PHP-sse ringi pannud: tulemuseks on porno.

_________________
Mõistus otsas? Pane pinusse...
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 23.04.2010 00:17:46 vasta tsitaadiga

jumal tänatud. ma siin kartsin, et panin siin oma katsetamisega mööda täiega kuna väideti, et ma oma eelpool mainutud klassiga leiutan jalgratast...
see mysqli on pealegi veel bugine kah. näiteks long integeri peab sisestama stringina...

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
iceincube
HV veteran
iceincube

liitunud: 18.11.2005




sõnum 23.04.2010 22:54:13 vasta tsitaadiga

Ma kasutaks ka muid asju.
Kuna kasutan ise Zend'i päris palju siis soovitan seda.


Samuti kavas doctrine'i proovida.
Kommentaarid: 39 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 37
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 29.04.2010 21:54:12 vasta tsitaadiga

no zend framework lihtsalt andmebaasiga suhtlemiseks vist oleks liiast... kui sa nüüd seda mõtlesid
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
iceincube
HV veteran
iceincube

liitunud: 18.11.2005




sõnum 29.04.2010 22:46:11 vasta tsitaadiga

eks ta mõnes mõttes õige ole..
Ma toon sulle näite, kui tahad proovida...


//config fail
$dbCongig = array(
   'adapter' => 'Pdo_Mysql',
   'logindata' => array(
      'host'     => 'localhost',
      'username' => '',
      'password' => '',
      'dbname'   => ''
   ),
);

//bootstrap
set_include_path( '/usr/local/lib/ZendFramework/library' . PATH_SEPARATOR . get_include_path() );

require_once 'Zend/Db.php';
require_once 'Zend/Db/Table.php';
require_once 'Zend/Registry.php';
require_once 'Zend/Db/Table/Abstract.php';

$db = Zend_Db::factory($dbCongig['adapter'], $dbCongig['logindata']);
$db->query("SET NAMES 'utf8'");
Zend_Db_Table_Abstract::setDefaultAdapter($db);


//see osa kontrollerisse
$tTable = new Zend_Db_Table('minutabel'); //loome tabeli objekti

$data = array(
   'date_inserted' => date('Y-m-d H:i:s')
);
$id = $tTable->insert( $data ); //sisestame uue rea

if($id){
   echo 'inserted: ' . $id;
}


baasis peaks siis olema tabel nimega 'minutabel' väljaga 'date_inserted' ja mingi primary auto incremental key


viimati muutis iceincube 30.04.2010 00:49:51, muudetud 1 kord
Kommentaarid: 39 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 37
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 29.04.2010 23:28:57 vasta tsitaadiga

ma kunagi midagi postitasin kah siia, aga hetkel olen kirjutanud selle klassi andmebaasiga suhtlemiseks:

php:
  1. <?php
  2. class MysqlDB {
  3.   private $link;
  4.  
  5.   function __construct() {
  6.     $this->open_connection();
  7.   }
  8.  
  9.   public function open_connection() {
  10.     if(@!$this->link = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS)) {
  11.       die('Mysql connect error: ' . mysql_error());
  12.     } elseif(!mysql_select_db(SQL_DB, $this->link)) {
  13.       die('Mysql select database error: ' . mysql_error());
  14.     }
  15.   }
  16.  
  17.   public function query($query) {
  18.     if($result = mysql_query($query, $this->link)) {
  19.       return $result;
  20.     } else {
  21.       $error_msg  = 'Mysql fatal error: ' . mysql_error() . '<br>';
  22.       $error_msg .= 'Last query: ' . $query;
  23.       die($error_msg);
  24.     }
  25.   }
  26.  
  27.   public function fetch_array($result) {
  28.     return mysql_fetch_array($result);
  29.   }
  30.  
  31.   public function fetch_assoc($result) {
  32.     return mysql_fetch_assoc($result);
  33.   }
  34.  
  35.   private function sformat($arg_list) {
  36.     $query = array_shift($arg_list);
  37.    
  38.     foreach($arg_list as $arg) {
  39.       $new_list[] = $this->escape_value($arg);
  40.     }
  41.    
  42.     $string = vsprintf($query, $new_list);
  43.    
  44.     return $string;
  45.   }
  46.        
  47.   public function squery() {
  48.     $query = $this->sformat(func_get_args());
  49.                
  50.      return $this->query($query);
  51.   }
  52.  
  53.   public function insert_id() {
  54.     return mysql_insert_id($this->link);
  55.   }
  56.  
  57.   public function affected_rows() {
  58.     return mysql_affected_rows($this->link);
  59.   }
  60.  
  61.   public function num_rows($result) {
  62.     return mysql_num_rows($result);
  63.   }
  64.  
  65.   public function escape_value($value) {
  66.     return mysql_real_escape_string($value);
  67.   }
  68.  
  69.   public function count_rows_from_table($table) {
  70.     $result = $this->query("select count(*) from " . $table);
  71.     $count = array_shift($this->fetch_array($result));
  72.    
  73.     return $count;
  74.   }
  75. }
  76. ?>


$id = 7;
$db = new MysqlDB;
$result = $db->squery("select name from tabel where id='%s'", $id);


ehk kellelegi abiks...

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
morgoth
HV kasutaja
morgoth

liitunud: 14.01.2004




sõnum 30.04.2010 00:06:45 vasta tsitaadiga

IMO DB klassil võiks ka mingi error handling olla. Hea kuskile logisse salvestada, kui midagi nihu läheb, või transaktsioonile rollbacki teha.

Zend_Db_Table abil annab suht hästi table data gateway patterni kasutada: Extendid oma klassi sellest ning pärast on väga mugav andmeid muuta/lisada:

$data = $this->createRow();
$data->username  = 'username';
$data->save();

Suht win ju.
Kommentaarid: 11 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 10
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 30.04.2010 01:08:47 vasta tsitaadiga

mul endal selline süsteem tehtud. aga alates PHP 5.3 late static bindinguga... kus siis esimine klass sisaldab funktsioone, ja teine siis extendib teda kus ma kirjeldan ära siis tabeli nime ja vajadusel siis custom funktsioonid. saab samuti teha näiteks:

$page = Pages::find_by_id(4);
$page->name = 'uus nimi';
$page->save();

uus kanne oleks siis
$page = new Pages;
$page->save();

<?php
class Pages extends DatabaseObject {
  protected static $table_name = DB_PAGES;
}
?>

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 28.05.2010 10:13:36 vasta tsitaadiga

kas keegi viitsiks mulle seletada, mis point on abstract classidel. ma siin vaatasin manuali, kuid ei saa pihta, miks neid vaja on...
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Ho Ho
HV Guru
Ho Ho

liitunud: 16.02.2002




sõnum 28.05.2010 17:11:15 vasta tsitaadiga

Kui üldised OO põhimõtted selged ei tohiks aru saamine väga keerukas olla, kui ei ole selged siis pole vist eriti mõtet isegi üritada selgitada.


Sisuliselt abstraktne klass on selline klass, mida otseselt kusagil ei kasutata, see on ette nähtud ainult extendimiseks teiste klasside poolt. A'la midagi sellises stiilis (pseudokood c++ baasil):


abstract class Shape {
  Type type();
  int numPoints();
};

class Triangle extends Shape {
  Type type() {
    return Type::Triangle;
  }
  int numPoints() {
   return 3;
  }
};
class Square extends Shape {
  Type type() {
    return Type::Square;
  }
  int numPoints() {
   return 4;
  }
};

Edaspidi kirjutad koodi, mis tegeleb kõiksugu kujunditega siis kasutad üldiste operatsioonide jaoks abstraktset baasklassi ning saad endiselt kasutada kõiki sellest tuletatud klasside funktsioone. Baasklassi ennast ei saa otse luua. Koos kompilaatori poolt tehtavate lisakontrollidega peaks see tagama, et kõik abstraktses klassis defineeritud funktsioonid on kõigis sellest tuletatud klassides implementeeritud.

Alternatiivselt võib abstraktseid klasse ka interface'ks kutsuda, kui mälu ei peta siis Javas seda tehaksegi.

_________________
Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity"
Kommentaarid: 106 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 86
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Fukiku
Kreisi kasutaja
Fukiku

liitunud: 06.11.2003



Autoriseeritud ID-kaardiga
sõnum 28.05.2010 17:45:39 vasta tsitaadiga

Ho Ho kirjutas:
Alternatiivselt võib abstraktseid klasse ka interface'ks kutsuda, kui mälu ei peta siis Javas seda tehaksegi.
Päris nii lihtne see ei ole, Java kontekstis on olemas nii liidesed (interface) kui abstraktsed klassid. Liidesed defineerivad ära portsu meetodeid millele antud liidest realiseeriv klass peab andma sisu. Abstraktne klass on klass, milles on meetodeid, mis on realiseerimata (e. puudub sisu) ja vajavad alamklassis realiseerimist ning meetodid, mis on juba realiseeritud (sisu on olemas). Liides on seega mõistlik kasutada mingi klassi omaduste kirjeldamiseks ja jätta realisatsioon täielikult arendaja teha, abstraktne klass juhul, kui sa soovid osa klassi omadustest ise ära realiseerida ning osa jätta arendajale tegemiseks. Tegin ka mingi pisikese Java põhise näite, mis ehk aitab ka üldisemas plaanis pärilusest ja muust seonduvast aru saada. Loodud on siis liides Loom, abstraktne klass Imetaja, mis defineerib ära midagi, mis on kõigil imetajail ühine ning konkreetne klass Kass, mis realiseerib kõik nõutud meetodid et tagada Loom'ale vajalik käitumine.
java:
  1. interface Loom {
  2.   int leiaJalgadeArv();
  3.  
  4.   String teeHäält();
  5.  
  6.   boolean sööLoom(Loom ohver);
  7.  
  8.   boolean sööTaim(Taim ohver);
  9. }
  10.  
  11. abstract class Imetaja implements Loom {
  12.  
  13.   // määrame sisu ainult ühele meetodile, sest tegemist on abstraktse klassiga
  14.   // me ei pea kõike ise tegema
  15.   public int leiaJalgadeArv() {
  16.     // sest kõigil imetajail on neli jalga
  17.     return 4;
  18.   }
  19.  
  20. }
  21.  
  22. class Kass extends Imetaja {
  23.  
  24.   // siin realiseerime kõik, mis vaja, aga jalgade arvu uuesti tegema ei pea
  25.   // see on Imetaja abstraktses klassis juba tehtud.
  26.   // ühtlasi on ka see klass kasutatav igal pool kui Loom, sest läbi Imetaja
  27.   // pärib ta Looma omadused
  28.  
  29.   public boolean sööLoom(Loom ohver) {
  30.     // kass sööb teisi loomi
  31.     return true;
  32.   }
  33.  
  34.   public boolean sööTaim(Taim ohver) {
  35.     // taimi ei söö
  36.     return false;
  37.   }
  38.  
  39.   public String teeHäält() {
  40.     return "mjäu";
  41.   }
  42.  
  43. }

_________________
Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 28.05.2010 18:55:39 vasta tsitaadiga

ka php-s on olemas interfaced...
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
telefoon
HV vaatleja

liitunud: 05.05.2003




sõnum 29.05.2010 12:54:17 vasta tsitaadiga

Abstract class'i kasutamiseks peab tegema sellele alamklassi. Üks alamklass aga ei saa extendida mitut ülemklassi.
Interface'ga on aga nii, et üks klass võib implementeerida mitmeid interface'e. Selles mõttes on interface palju dünaamilisem.
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum
blinx
HV vaatleja

liitunud: 28.11.2009




sõnum 29.05.2010 20:12:57 vasta tsitaadiga

Ei ole tõesti kiiruse vahet abstraktklasside meetoditel ja tavalistel.
_________________
'Just buy everything then you're safe'


viimati muutis blinx 31.05.2010 00:20:21, muudetud 2 korda
tagasi üles
vaata kasutaja infot saada privaatsõnum
Ho Ho
HV Guru
Ho Ho

liitunud: 16.02.2002




sõnum 29.05.2010 23:17:56 vasta tsitaadiga

blinx kirjutas:
Minuarust pole mõtet abstraktklasse ilmaasjata kasutada. Kui õigesti mäletan siis kaasneb sellega käitusaegne töötlusaja

pikenemine igas keeles.
Ei tohiks olla mingist otsast keerulisem, kui hariliku klassi extendimine. Abstraktse klassi otse loomise kontroll tehakse ära kompileerimise ajal.
_________________
Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity"
Kommentaarid: 106 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 86
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 29.05.2010 23:38:58 vasta tsitaadiga

kas oleks võimalik saada klassi nimi ilma namespaceta kätte?

php:
  1. <?php
  2. //PHP 5.3.x
  3. namespace some\where;
  4.  
  5. abstract class ParentClass {
  6.   public static function name() {
  7.     return strtolower(get_called_class());
  8.   }
  9.  
  10.   public static function get_name() {
  11.     echo 'name: ' . static::name();
  12.   }
  13. }
  14.  
  15. class ChildClass extends ParentClass {
  16. }
  17.  
  18. ChildClass::get_name();
  19. ?>


tulemus mis ma tahan: childclass
tulemus mille saan: some\where\childclass

ja kas kuidagi saaks selle name() statilisse muutujasse kui ainult staatiline meetod on väljakutsutud?

edit: krt nüüd hakkasin ise mõtlema selle muutujasse saamise üle. sel juhul peaks nagu __construct käivituma kui statiline meetod välja kutsutakse... aga seda ju ei saagi juhtuda

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 30.05.2010 15:44:31 vasta tsitaadiga

morgoth kirjutas:
IMO DB klassil võiks ka mingi error handling olla. Hea kuskile logisse salvestada, kui midagi nihu läheb, või transaktsioonile rollbacki teha.


mida sa selle all mõtled?

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Fukiku
Kreisi kasutaja
Fukiku

liitunud: 06.11.2003



Autoriseeritud ID-kaardiga
sõnum 30.05.2010 23:56:23 vasta tsitaadiga

keevitaja kirjutas:
morgoth kirjutas:
IMO DB klassil võiks ka mingi error handling olla. Hea kuskile logisse salvestada, kui midagi nihu läheb, või transaktsioonile rollbacki teha.


mida sa selle all mõtled?
Milline osa arusaamatuks jääb, et mitte tervet maad ja ilma lahti seletada?
_________________
Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 31.05.2010 00:24:54 vasta tsitaadiga

icon_biggrin.gif põmst kogu see jutt. ehk siis mingeid erroried see klass ju vajadusel kuvab. kas oleks pigem passlikum need errorid kuhugi muutujasse panna? mida tähendab transaktsioonile rollback...
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
raido357
HV veteran

liitunud: 26.09.2002



Autoriseeritud ID-kaardiga
sõnum 31.05.2010 06:30:49 vasta tsitaadiga

keevitaja kirjutas:
... mida tähendab transaktsioonile rollback...


Seda, et enne enne kui lõplikult andmed andmebaasi kirjutatakse on võimalik seda tühistada.

A'la teed mingise INSERTI aga siis juhtub järgmises rakenduse faasis midagi ja siis saad tegevuse katkestada ja andmebaasist kah andmed kustutada, kasutades ROLLBACK käsku. Mitte ei pea hakkama DELETE statementi tekitama.

http://www.databasejournal.com/features/mysql/article.php/3382171/Transactions-in-MySQL.htm
Kommentaarid: 78 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 70
tagasi üles
vaata kasutaja infot saada privaatsõnum
Le Inc
HV Guru
Le Inc

liitunud: 06.09.2002



Autoriseeritud ID-kaardiga
sõnum 31.08.2011 07:56:10 vasta tsitaadiga

Küsimus. Kas objekti meetoditest saab kuidagi "väljundit" kätte ilma return'ita. Ehk on meetod (funktisioon) mis teeb midagi tarka, kuid vahel võib ka viga tulla mis try ja catch kinni püütakse. Kui ma "echo" kirjutan siis see pritsitakse html, AGA tahaks kuskile muutujasse susata ja koodis "õiges kohas" uuesti välja lasta. Ainuke hetkel töötav variant on return susata ja sealt a la echo $klass->TereTore(); (// samal ajal käivitatakse funktsioon) kätte saada.

Kas saaks kuidagi teistmoodi ka?
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
jnt
HV Guru
jnt

liitunud: 10.05.2005



Autoriseeritud ID-kaardiga
sõnum 31.08.2011 07:58:43 vasta tsitaadiga

& märk pane funktsiooni/meetodi argumendi ette. Siis muutes seda sees pool funktsiooni/meetodit muutub ka väljas pool see sama muutuja sisu. Lisaks olemas $_GLOBALS ja lihtsalt muutujate globaalseks tegemine.
_________________
Progemisest: https://byteaether.github.io/
Seisab keldris vana 386-486-Pentium1? Räägime! Ehk saan vanakesele uue elu anda. icon_wink.gif
Kommentaarid: 116 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 107
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Le Inc
HV Guru
Le Inc

liitunud: 06.09.2002



Autoriseeritud ID-kaardiga
sõnum 31.08.2011 08:09:59 vasta tsitaadiga

jnt kirjutas:
& märk pane funktsiooni/meetodi argumendi ette. Siis muutes seda sees pool funktsiooni/meetodit muutub ka väljas pool see sama muutuja sisu. Lisaks olemas $_GLOBALS ja lihtsalt muutujate globaalseks tegemine.

Tänud proovin järgi.

Heh, leidsin just ka lahenduse. Tuleb uus meetod teha mis lihtsalt tagastab väärtuse.

function annaViga () {
return $this->error;
}

hiljem koodis echo $klass->annaViga();
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
jnt
HV Guru
jnt

liitunud: 10.05.2005



Autoriseeritud ID-kaardiga
sõnum 31.08.2011 08:13:09 vasta tsitaadiga

Le Inc, muidugi saad klassis olevaid property'eid funktsiooni sees kasutada. Vaata ainult, et siis korraliku koodi mõistes klassis nood property'd ära ka defineerid.

Errorite jaoks võiks üldse üks staatiline error klass olla või veel enam, tee enda error handler ja siis lihtsalt trigger'dad erroreid ja su enda klass püüab nad kinni ja teeb, mida vaja.

_________________
Progemisest: https://byteaether.github.io/
Seisab keldris vana 386-486-Pentium1? Räägime! Ehk saan vanakesele uue elu anda. icon_wink.gif
Kommentaarid: 116 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 107
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Le Inc
HV Guru
Le Inc

liitunud: 06.09.2002



Autoriseeritud ID-kaardiga
sõnum 31.08.2011 08:30:16 vasta tsitaadiga

Põmst trein üht klassi mis SOAP kaudu majandaks mobiil-id. Hetkel on plaanis piirduda ainult autentimisega, signeerimine jääb kunagi tulevikku, kui mul endal tekib selle järgi otsene vajadus.

Veakoodid mis tekivad SOAP päringust kutsuvad php Fatal Error'i välja (milleks!?). Ilma try ja catch jääks kood kinni. Hetkel olen veamajanduse array ära lahendanud (catch püüab SoapFault veastringi kinni), kus vastavale veakoodile on masiivis ka "tõlge".

Vististi on SK ka sarnasest koodist huvitatud (nende näide on PEAR põhine). Võimalik kui koodi valmis saan panen siisa üles, saate suuremad OOP kunnid üle kaeda (see mul esimene OOP moodi progemine). hetkel väga ei julge avalikult turule minna. icon_biggrin.gif
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
Erti-Chris
HV vaatleja
Erti-Chris

liitunud: 23.07.2011




sõnum 31.08.2011 11:43:07 vasta tsitaadiga

Le Inc kirjutas:
Põmst trein üht klassi mis SOAP kaudu majandaks mobiil-id. Hetkel on plaanis piirduda ainult autentimisega, signeerimine jääb kunagi tulevikku, kui mul endal tekib selle järgi otsene vajadus.

Veakoodid mis tekivad SOAP päringust kutsuvad php Fatal Error'i välja (milleks!?). Ilma try ja catch jääks kood kinni. Hetkel olen veamajanduse array ära lahendanud (catch püüab SoapFault veastringi kinni), kus vastavale veakoodile on masiivis ka "tõlge".

Vististi on SK ka sarnasest koodist huvitatud (nende näide on PEAR põhine). Võimalik kui koodi valmis saan panen siisa üles, saate suuremad OOP kunnid üle kaeda (see mul esimene OOP moodi progemine). hetkel väga ei julge avalikult turule minna. icon_biggrin.gif

http://php.net/manual/en/function.set-error-handler.php
püüab kõik errorid kinni..
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  PHP5 OOP küsimused mine lehele eelmine  1, 2
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.