Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] referencja czy kopia?
Forum PHP.pl > Forum > Przedszkole
tua1
Witam

  1. public function caption($caption, $font_size, $image = NULL, $x = NULL, $y = NULL) {
  2. $img = isset($image) ? $image : $this->image;


Czy w przypadu nie spełnienia się warunku isset($image) w $img będzie znajdowała się kopia $this->image, czy referencja do tego pola ?
nospor
zalezy jak leży...

te $image to co to jest?
tua1
Obrazek utworzony przed jedną z funkcji biblioteki gd, np. imagecreatefromjpeg lub np. imagecreatetruecolor

Może po prostu zrobić tak:

if (isset($image)) {
$img = $image;
} else {
$img = &$this->image;
}
nospor
referencja.

Ale na dobrą sprawę mogłeś to sam sprawdzic winksmiley.jpg
phpion
~nospor chyba źle się wyraził - chodzi o to czym jest $this->image. Jeśli jest to obiekt to będzie to referencja do obiektu, jeśli jest to inny typ to będzie to wartość składowej. Oczywiście mówimy tutaj o PHP5, bo w PHP4 zawsze będzie to wartość zmiennej (nawet dla obiektu).
nospor
no $this->image to też zapewne ten sam typ co $image, wiec dobrze mi odpowiedzial winksmiley.jpg

obiekt i resource przekazywane są jako referencja.
A nawet jesli resource nie jest przekazywany jako referencja, to i tak wskazuje na to samo smile.gif
tua1
Dziękuję Panowie za pomoc.

Rozumiem, że takie sprawdzenie, o którym pisze @nospor realizuje się za pomocą

$img === $this->image

czy tak?
nospor
Nie, miałem na myśli takie sprawdzenie
  1. header ('Content-type: image/png');
  2. $im = @imagecreatetruecolor(120, 20)
  3. or die('Cannot Initialize new GD image stream');
  4. $im2 = $im;
  5. $text_color = imagecolorallocate($im, 233, 14, 91);
  6. imagestring($im2, 1, 5, 5, 'A Simple Text String', $text_color);
  7. imagestring($im2, 1, 5, 5, 'A Simple Text String blabla', $text_color);
  8. imagepng($im);
  9. imagedestroy($im);
  10.  

smile.gif

ps2:
  1. $zm=2;
  2. $zm2 = 2;

$zm === $zm2 co ci da? Czy to bedzie znaczylo ze masz referencje? winksmiley.jpg
tua1
Nie no głupota, to znaczyłoby, że obie mają tą samą wartość i są tego samego typu.

Ja mam taką m.in funkcję:

  1.  
  2. private function get_width($image) {
  3. return ($image == $this->image) ? $this->width : imagesx($image);
  4. }


Tylko nie wiem czy taki warunek zadziała :/ Pogubiłem się już całkiem.

Funkcję tę wykorzystuję w w/w funkcji caption() :

  1. $width = $this->get_width($img);
  2. $height = $this->get_height($img);


gdzie $img może być jakimś nowym obrazkiem, lub obrazkiem "głównym" przechowywanym w polu klasy.
nospor
Cytat
Nie no głupota, to znaczyłoby, że obie mają tą samą wartość i są tego samego typu.
Dokładnie. Wolałem się upewnić czy sobie z tego zdajesz sprawę.

Cytat
Tylko nie wiem czy taki warunek zadziała :
No a nie mozesz sprawdzic?
tua1
Sprawdziłem już oczywiście, eh to chyba od tego gorąca. Dzięki.

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.