Wątek zablokowany 2014-10-17 09:03 przez dzek69.

Co oznacza i do czego służy "::" w php?

0

Mam takie pytanie na google nie znalazłem, a mianowicie co oznacza :: coś w php
np. JLoader::import();
Bo według mnie to nie jest odwołanie się to funkcji w obiekcie.

0
Patryk27 napisał(a):

http://en.wikipedia.org/wiki/Scope_resolution_operator

Ale tam nie było przykładu wykorzystania tego w PHP.

1

Masz podaną najdokładniejszą możliwą nazwę tego operatora w PHP, a i tak nie potrafisz odnaleźć tego w dokumentacji?
http://www.php.net/manual/en/keyword.paamayim-nekudotayim.php
http://php.net/manual/en/language.oop5.paamayim-nekudotayim.php

0

Jeszcze mam jedno pytanie bo tam nie było wyjaśnione czy zapomocą :: możemy się również odwoływać do zmiennych klasowych bo tylko były przykłady z funkcjami.

np.

<?php
class A {
    function example() {
        echo "I am the original function A::example().<br />\n";
    }
}

class B extends A {
    function example() {
        echo "I am the redefined function B::example().<br />\n";
        A::example();
    }
}

// there is no object of class A.
// this will print
//   I am the original function A::example().<br />
A::example();

// create an object of class B.
$b = new B;

// this will print 
//   I am the redefined function B::example().<br />
//   I am the original function A::example().<br />
$b->example();
?> 

Mój przykład

 <?php
class A {
    function example() {
        echo "I am the original function A::example().<br />\n";
    }
}

class B extends A {
public $a;
    function example() {
        echo "I am the redefined function B::example().<br />\n";
        A::example();
print $this->a;
    }
}

// there is no object of class A.
// this will print
//   I am the original function A::example().<br />
A::example();
B::a = 5; //to nie zadziała czemu
B::$a = 5; //to też
B::$this->a = 5; //to też
// create an object of class B.
$b = new B;

// this will print 
//   I am the redefined function B::example().<br />
//   I am the original function A::example().<br />
$b->example();
?>
0

B::$a zadziała
edit: no tak, ale $a musi być statyczne (słówko static).

generalnie nazwa_klasy::statyczna_metoda(); albo nazwa_klasy::$statyczny_atrybut - jeżeli nie wiemy co to statyczność no to google/manual

ps. wywołanie niestatycznej funkcji statycznie jest możliwe, ale wygeneruje ostrzeżenie. no i gdy w metodzie mamy $this no to skończy się to fatal errorem ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1