Armenian Knowledge Base  

Go Back   Armenian Knowledge Base > Technical sections > Webmaster Zone > Web Development
Register

Reply
 
LinkBack Thread Tools
Old 02.07.2007, 09:56   #1
Младенец
 
Join Date: 06 2007
Location: Yerevan
Posts: 9
Downloads: 1
Uploads: 0
Reputation: 0 | 0
Default PHP Class Define

Barev dzez hargeli forumi masnakicner, Programmerner!!!

Unem mi harc Class - eri veraberyal, shat shnorhakal klinem lselu xorhurdner, ognutyan kargov.

Unenq Class - class.php - um
############################
class.php

class user() {
var $usr;

function set_username ($name) {
$this->usr=$name;
} // end function

function get_username () {
return $this->usr;
} // end function

} // end class
#############################

unenq naev index.php, vortex haytararum enq object

index.php
#############################

require("class.php");
$u=new user();
$u->set_username ('Armen');
echo $u->get_username();

#############################

ays amen@ haskanali e... bayts inchpes kareli e ogtvel classi objectneric mek ayl php fileum, orinak patkeracnenq vor ays index.php fileum classi $usr object@ stanum e arjeq... bayts ayd arjeq@ mez petq e naev myus fileum.. asenq other.php - um.

Naxapes shnorhakalutyun!
Reply With Quote
Old 02.07.2007, 10:24   #2
Авик
 
CyberJoe's Avatar
 
Join Date: 07 2002
Location: Yerevan
Age: 30
Posts: 1,348
Downloads: 2
Uploads: 0
Reputation: 9 | 0
Default

uxxaki $u-n pet-q e global popoxakan lini vor karanas myus fileum el gres
$u->get_username();
mi qich indz tvuma konkret chi dep@ nkaragrac. u class-i het henc bun kap chuni.

p.s
karoxa du uzum es et classic menak mek instance unenas? et depqum petqa ogtagorces singleton, byc indz tvuma stex ays depq@ chi
__________________
вот собственно все, что я хотел сказать.
Reply With Quote
Old 02.07.2007, 16:40   #3
Младенец
 
Join Date: 06 2007
Location: Yerevan
Posts: 9
Downloads: 1
Uploads: 0
Reputation: 0 | 0
Default hargeli CyberJoe shat shnorhakal em xorhrdi hamar

shat shnorhakal em xorhrdi ev ognutyam hamar...

Ban@ nranum e, vor indz petq e ayd classi arjeqner@ pahel amboxch sessiai jamanak, aysinqn erb usr popoxakan@ stanum e arjeq, apa shrjelov tarber ejerum, es karoxanak stanal ayd arjeq@ $u->get_user(); mijocov.

u mi nurb pah el ka

asenq unem config.php u $u=new user(); haytararum em config.php - um.
isk config.php bolor filerum require("config.php"); em anum.
inch anem config.php - um, erb $u=new user();araj script@ haskana vor $u arden haytararvats e?

Krknaki angam naxapes shnorhakalutyun!
Reply With Quote
Old 02.07.2007, 16:43   #4
Младенец
 
Join Date: 06 2007
Location: Yerevan
Posts: 9
Downloads: 1
Uploads: 0
Reputation: 0 | 0
Default

u ete kareli e, knkaragres inch e "singleton" @ ?
Reply With Quote
Old 02.07.2007, 16:59   #5
Авик
 
CyberJoe's Avatar
 
Join Date: 07 2002
Location: Yerevan
Age: 30
Posts: 1,348
Downloads: 2
Uploads: 0
Reputation: 9 | 0
Default

ha.. pastoren kez henc singletona petq

singletoni masin nayir aystex: http://en.wikipedia.org/wiki/Singleton_pattern

isk ko uzac@ henc saya:

PHP Code:
class User {
  
// object instance
  
private static $instance;
  
  private static 
$name;
 
  private function 
__construct() {}
 
  private function 
__clone() {}
 
  public static function 
getInstance() {
    if (
self::$instance === null) {
      
self::$instance = new User();
    }
    return 
self::$instance;
  }
 
  public function 
getName() {
    return 
$this->name;
  }
  
  public function 
setName($name) {
    
$this->name $name;
  }  
}
 

User::getInstance()->setName('Benjamin Linus');

$name User::getInstance()->getName(); 
aysinqn kez el $u popoxakan petq chi, mish kanchum es
User::getInstance(), ev nuyn popoxakannes stanum amentexic

Last edited by CyberJoe; 03.07.2007 at 12:17.
Reply With Quote
Old 02.07.2007, 17:17   #6
The splendid
 
AvDav's Avatar
 
Join Date: 07 2004
Location: Pure thoughts
Age: 36
Posts: 3,408
Downloads: 22
Uploads: 0
Reputation: 222 | 3
Default

А если ему надо создать несколько экземпляров класса Юзер? Тогда синглтон тут не применим. Не понимаю в чем проблема, просто создаешь обьект в конфиг.пхп и пользуешь в других файлах, что не получается то?
Reply With Quote
Old 02.07.2007, 18:12   #7
Младенец
 
Join Date: 06 2007
Location: Yerevan
Posts: 9
Downloads: 1
Uploads: 0
Reputation: 0 | 0
Default

CyberJoe jan, shat shnorhakal em...

AvDav;588549]А если ему надо создать несколько экземпляров класса Юзер? Тогда синглтон тут не применим. Не понимаю в чем проблема, просто создаешь обьект в конфиг.пхп и пользуешь в других файлах, что не получается то?[/quote]

skaju chto dorogoy AvDav! Tut takoe delo... skajem v konfig.php ya sozdayu $u = new user(); OK?
A v index.php $u->set_user('David'); OK?
i skajem na stronice index.php est link lala.php, pre perexode lala.php najatiem na ssilku, (bez get, i post) kak v filee lala.php mne poluchit $u->get_username();

esle ya v lala.php stavlyu require("config.php"); to pre kajdom require iz raznix fileov v config.php object $u obyavlyaetsa vse snova i snova, no mne on nujen lish pre pervoy obyavlenii. i eshcho obyavlenie i set funkcii klass u menya nezoviseni, toest iz raznix php fileov v site...

Blagodaryu za pomoshch!
Reply With Quote
Old 02.07.2007, 18:58   #8
The splendid
 
AvDav's Avatar
 
Join Date: 07 2004
Location: Pure thoughts
Age: 36
Posts: 3,408
Downloads: 22
Uploads: 0
Reputation: 222 | 3
Default

Обьект не создается снова и снова, у тебя просто напросто глобальная перменная которая один раз создается при первом require, дальше логику надо строить так чтоб получить то что надо, насколько я понял, ты хочешь вызвать get_username(), с ожидаемым ответом 'David'? Тогда очевидно, тот кусок кода который делает set, должен вызваться раньше, соответсвенно, в lala.php надо сделать require("index.php"); а не require("config.php");
Reply With Quote
Old 02.07.2007, 22:33   #9
Младенец
 
Join Date: 06 2007
Location: Yerevan
Posts: 9
Downloads: 1
Uploads: 0
Reputation: 0 | 0
Default

Dorogoy AvDav! mojet bit ya slishkom mnogo osujdayu voprosi, zadannie mnoyu, ush izvenite menya za eto ...
No vopros takov -
1) yesle ya v lala.php stavlyu require("index.php"); a ne config.php, to lala.php kak budet znat' o tom, chto set_user() bil vizvan v index.php, a ne skajem v koko.php? vet' set_user() mojet
vizvacca v lyubom file - e.
2) a stoit li stavit require("index.php"); poskolku index.php yavlyaetsa polnim html fileom ? (ne schetaya to chto mojno prosto kusok set_user() stavit iz drugogo filea skajem set.php )
3) ti prav, ya xochu poluchit pre pomoshchi get_user() - 'David', odnako functsia set_user(), mojet vizvacca iz lyubogo filea v site - e!
4) pre obyavlenii vo vsex fileax "config.php" - v config.php $u = new user(); srobativaet construktor kotori presvaivaet nekotorix peremennix znachenie po umolchaniu. i uje v drugix
fileax peremennie poluchayut drugie znachenie pre pomoshchi set_xxx(); tolko vot - pre pervom shage skajem v index.php vso rabotaet normalno require("config.php"); kotori (konfog)
obyavlyaet $u a v uje v index.php rabotaet $u->set_user(); no pre perexode v lala.php, ile je v koko.php ya ne znayu kak poluchit $u. vet' esle ya v etix fileax stavlyu config.php, to v
confige $u snova opredelyaetsa, kak v pervi raz iz index.php... mojet est' kakoy to variant uznat' v config.php o tom chto $u uje obyavlen, i ne nado bolshe pisat' $u=new user(); vet' v
koko.php ya poluchayu $u s pustimi znacheniami.
Blagodaryu, i izvenite mne eshcho za ne gramotni russki yazik
Reply With Quote
Old 03.07.2007, 00:00   #10
The splendid
 
AvDav's Avatar
 
Join Date: 07 2004
Location: Pure thoughts
Age: 36
Posts: 3,408
Downloads: 22
Uploads: 0
Reputation: 222 | 3
Default

Не знаю если честно почему такая проблема, у меня солидного опыта в ПХП нет, но я тут наверстал пример который нормально работает, можешь также попробовать require_once() который помещает код лишь один раз в отличии от require().
Reply With Quote
Old 03.07.2007, 04:57   #11
Дошкольник
 
Join Date: 10 2004
Location: Yerevan
Age: 29
Posts: 116
Downloads: 8
Uploads: 0
Reputation: 2 | 0
Default

Quote:
Originally Posted by kernel View Post
Barev dzez hargeli forumi masnakicner, Programmerner!!!

Unem mi harc Class - eri veraberyal, shat shnorhakal klinem lselu xorhurdner, ognutyan kargov.

Unenq Class - class.php - um
############################
class.php

class user() {
var $usr;

function set_username ($name) {
$this->usr=$name;
} // end function

function get_username () {
return $this->usr;
} // end function

} // end class
#############################

unenq naev index.php, vortex haytararum enq object

index.php
#############################

require("class.php");
$u=new user();
$u->set_username ('Armen');
echo $u->get_username();

#############################

ays amen@ haskanali e... bayts inchpes kareli e ogtvel classi objectneric mek ayl php fileum, orinak patkeracnenq vor ays index.php fileum classi $usr object@ stanum e arjeq... bayts ayd arjeq@ mez petq e naev myus fileum.. asenq other.php - um.

Naxapes shnorhakalutyun!
В PHP нет встроенного механизма для хранения об'ектов в сессии, ты должен сам выбрать/реализовать механизм сериализации и десериализации, ты должен поставить в соответствие SID и об'ект юзера, например можешь хранить его в DB, сериализавать в XML, или даже использовать serialize и забросить в сессию. Такой подход чаще используется в языках/технологиях более высокого уровня, например Java/.NET.

CyberJoe > Синглтон тут неприменим, время жизни твоего об'екта будет request, а нам нужно чтоб было session.

AvDav > Речь идет о другом. Проблема в том что, если каждый раз делать require(или require_once, без разницы), твой об'ект заново инициализируется, а нам надо чтоб он "сам знал" что хранит, без каких лобо set-ов.

kernel > Я правильно понял?
Reply With Quote
Old 03.07.2007, 12:09   #12
Авик
 
CyberJoe's Avatar
 
Join Date: 07 2002
Location: Yerevan
Age: 30
Posts: 1,348
Downloads: 2
Uploads: 0
Reputation: 9 | 0
Talking

Intel > Он точно именно это хотел? Я из его написанного понял что он вообще хочет просто иметь один инстанс класса, и все.

Кстати, бацец
PHP Code:
<?php
class User {
  
// object instance
  
private static $instance;
  
  private static 
$name;

  private function 
__construct() {}

  private function 
__clone() {}

  public static function 
getInstance() {
    if (@isset(
$_SESSION['user_instance'])) {
        
self:$instance unserialize($_SESSION['user_instance');
    } else {
        
self:$instance = new User();
        
$_SESSION['user_instance'] = serialize(self:$instance);    
    }
    return 
self::$instance;
  }

  public function 
getName() {
    
self:$instance unserialize($_SESSION['user_instance');
    return 
$this->name;
  }
  
  public function 
setName($name) {
    
$this->name $name;
    
$_SESSION['user_instance'] = serialize(self::$instance);        
  }  
}


User::getInstance()->setName('Benjamin Linus');

$name User::getInstance()->getName(); 
?>
Intel зацени степень моей обкуренности

Last edited by CyberJoe; 03.07.2007 at 12:31.
Reply With Quote
Old 03.07.2007, 12:41   #13
Дошкольник
 
Join Date: 10 2004
Location: Yerevan
Age: 29
Posts: 116
Downloads: 8
Uploads: 0
Reputation: 2 | 0
Default

Меньше курить надо было, а где session_start(); ?
Reply With Quote
Old 03.07.2007, 12:47   #14
Авик
 
CyberJoe's Avatar
 
Join Date: 07 2002
Location: Yerevan
Age: 30
Posts: 1,348
Downloads: 2
Uploads: 0
Reputation: 9 | 0
Default

за кадром осталсо
Reply With Quote
Old 03.07.2007, 20:53   #15
Младенец
 
Join Date: 06 2007
Location: Yerevan
Posts: 9
Downloads: 1
Uploads: 0
Reputation: 0 | 0
Default

Quote:
Originally Posted by Intel View Post
kernel > Я правильно понял?
Pravilno i Tochno!!!!
Reply With Quote
Sponsored Links
Reply

Thread Tools


На правах рекламы:
реклама

All times are GMT. The time now is 00:22.


Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.