Apie | Registracija

El. pašto adresas: Slaptažodis: Registracija.. Užmiršote slaptažodį..

Kintamųjų ir metodų matomumas (angl. visibility) PHP klasėse



Klasės kintamųjų bei metodų matomumas gali būti apibrėžtas nurodant prieš pavadinimą vieną iš priežodžių: public, protected arba private. Public tipo metodai ir kintamieji gali būti pasiekiami iš bet kur. Protected tuo tarpu gali pasiekti tik tėvinė ir vaiko klasė. Private leidžia pasiekti metodus ir kintamuosius tik tai klasei, kuriai jie priklauso

Kintamųjų matomumas 

<?php
  /**
  * Define MyClass
  */
  class MyClass
  {
    public $public = 'Public';
    protected $protected = 'Protected';
    private $private = 'Private';
    
    function printHello()
    {
      echo $this->public;
      echo $this->protected;
      echo $this->private;
    }
  }
  
  $obj = new MyClass();
  echo $obj->public; // Works
  echo $obj->protected; // Fatal Error
  echo $obj->private; // Fatal Error
  $obj->printHello(); // Shows Public, Protected and Private
  
  /**
  * Define MyClass2
  */
  class MyClass2 extends MyClass
  {
    // We can redeclare the public and protected method, but not private
    protected $protected = 'Protected2';
    
    function printHello()
    {
      echo $this->public;
      echo $this->protected;
      echo $this->private;
    }
  }
  
  $obj2 = new MyClass2();
  echo $obj2->public; // Works
  echo $obj2->private; // Undefined
  echo $obj2->protected; // Fatal Error
  $obj2->printHello(); // Shows Public, Protected2, Undefined
?> 

Metodų matomumas

Jeigu metodui nėra nurodyta nei public, nei protected, nei private, jis laikomas public.

<?php
/**
* Define MyClass
*/
class MyClass
{
// Declare a public constructor
public function __construct() { }

// Declare a public method
public function MyPublic() { }

// Declare a protected method
protected function MyProtected() { }

// Declare a private method
private function MyPrivate() { }

// This is public
function Foo()
{
$this->MyPublic();
$this->MyProtected();
$this->MyPrivate();
}
}

$myclass = new MyClass;
$myclass->MyPublic(); // Works
$myclass->MyProtected(); // Fatal Error
$myclass->MyPrivate(); // Fatal Error
$myclass->Foo(); // Public, Protected and Private work


/**
* Define MyClass2
*/
class MyClass2 extends MyClass
{
// This is public
function Foo2()
{
$this->MyPublic();
$this->MyProtected();
$this->MyPrivate(); // Fatal Error
}
}

$myclass2 = new MyClass2;
$myclass2->MyPublic(); // Works
$myclass2->Foo2(); // Public and Protected work, not Private

class Bar
{
public function test() {
$this->testPrivate();
$this->testPublic();
}

public function testPublic() {
echo "Bar::testPublic\n";
}

private function testPrivate() {
echo "Bar::testPrivate\n";
}
}

class Foo extends Bar
{
public function testPublic() {
echo "Foo::testPublic\n";
}

private function testPrivate() {
echo "Foo::testPrivate\n";
}
}

$myFoo = new foo();
$myFoo->test(); // Bar::testPrivate
// Foo::testPublic
?>

 

Facebook


Peržiūrėti visus komentarus

Susiję kursai

Temos



ITbazė - informacinių technologijų naujienos

www.prodesign.lt

Draugai

skelbimaistudentui.lt
Skelbimai studentui

elegantepress.lt
Elegantiškos spaudos studija

2trip.lt
Maršrutai, kelionių aprašymai

© Sigitas Drąsutis 2006-2009. Kopijuoti ir platinti be autorių sutikimo draudžiama. Kontaktai | Taisyklės

veltinis.lt | verinys.lt | mezginys.lt | nerinys.lt | piesinys.lt | siuvinys.lt | dirbinys.lt | audinys.lt | testuok.lt | freecomponent.com

Hey.lt - Interneto reitingai, lankomumo statistika, lankytojų skaitliukai