что то ищешь тут паря?

суббота, 2 марта 2013 г.

Начал проходить ООП.

class String {

public $str = 'Hello';

function getString()
{
return $this->str;
}

function setString($str)
{
$this->str = $str;
}

}

это обычный класс.


interface AnimalInterface {

public function walk();

}

интерфейс указывает структуру последователя(или же фраза:указывает родительской структуру)
тость в последователе нужно определить вышепреведенные методы.если же не определишь то выведет тебе фатал ерор

по поводу использования то пишут что используется очень редко.на практике хз где применить.хотя может все не так грусно.

чтоб наследовать его нужно написать:
implements

class Animal implements AnimalInterface{

// public, private, protected

public $color = '';
protected $head = 1;

public function __construct($color = 'brown')
{
$this->color = $color;
// echo 'Object is created!';
}

public function walk()
{
echo 'walk ' . $this->head;
}

public function __isset($name)
{
echo $name;
return FALSE;
}

public function __toString()
{
return 'Object';
}

public function __destruct()
{
// echo 'Object is destroyed!';
}

public function __get($name)
{
echo $name . 'rrrrrr';
}

public function __call($name, $args)
{
var_dump($args);
echo $name;
}

}

ТЕПЕРЬ. МЫ ВЫШЕ УКАЗАЛИ МЕТОДЫ _destruct(_construct) _get _set  _isset
мы по ним пройдемся чуть позже.а счас абстрактный класс:

абстрактный класс это смесь обычного класса и  инетрфейса там может быть и реализация метода и указание структуры

например:
abstract class Cat {

abstract function myau();

function run(){
echo 'run';
}

}

Теперь:статические методы и переменные вк которым можно обращаться без создания обьекта

тоесть можно присвоить какой то переменной результат выполнения статической функции без создания обьекта new

$car = Car::getInstance();

вот тут мы получили результат выполнения статического метода


вот что пишут про это на пхп.нет

Объявление свойств и методов класса статическими позволяет обращаться к ним без создания экземпляра класса. Атрибут класса, объявленный статическим, не можеть быть доступен посредством экземпляра класса (но статический метод может быть вызван).

class Foo
{
public static $my_static = 'foo';

public function staticValue() {
return self::$my_static;
}
}

class Bar extends Foo
{
public function fooStatic() {
return parent::$my_static;
}


}



Кстати:
Так как статические методы вызываются без создания экземпляра класса, то псевдо-переменная $this не доступна внутри метода, объявленного статическим.

Доступ к статическим свойствам класса не может быть получен через оператор ->.



с учителем мы разбирали такой пример:

class Car {

public $color = 'yellow';

static $instance = null;

static function getInstance(){

if (empty(self::$instance))
{
echo 'We\'re here';
self::$instance = new self;
}

return self::$instance;

}

private function __construct(){}
private function __clone(){}

}

 $car = Car::getInstance();  // грубо говоря мы этим только что сделали новый обьект
$car1 = clone $car; //а сдесь мы вроде захотели клонировать обьект НО НЕ СМОГЛИ .мы закрыли такую функцию  private function __clone(){}



вот у нас и красный цвет уже есть у машины

$car = Car::getInstance();
$car->color = 'red';

Теперь интересное свойство записи static

function test()
{
static $a = 0;
echo $a;
$a++;
}

если б возле a у нас не было статик то у нас бы выводился 0 а инкремент быне проводился потому как а была бы локальная переменная.
а так она теперь у нас статик и инкремент будет производиться

class Person {

public $hair = 'black';

}

$obj1 = new Person;
$obj1->hair = 'brown';

$obj2 = clone $obj1;
echo $obj2->hair;

кстати.что взять для парсера целую хтмл страницу нужно
echo file_get_contents('http://www.ssa.gov/oact/babynames/decades/names2000s.html');

если же не сработает тогда нужно библиотекой курл дслать.на этом на сегодня все.




Комментариев нет:

Отправить комментарий