php【基础学习十七】php面向对象的知识点



<?php

/**
 * Created by PhpStorm.
 * User: dell
 * Date: 2015/12/28
 * Time: 17:17
 */
require_once 'Ha.php';

abstract class Abs implements Ha
{
    abstract function sayAbs();

    function say()
    {
        echo 'say HaImpl.<br>';
    }

    public function sayOther()
    {
        echo 'Say other.<br>';
    }
}


<?php

/**
 * Created by PhpStorm.
 * User: dell
 * Date: 2015/12/28
 * Time: 17:18
 */

require_once 'Abs.php';

class AbsImpl extends Abs
{

    function sayAbs()
    {
        echo 'Say abs.<br>';
    }

    public function sayOther()
    {
        parent::sayOther();
        echo 'Say other.<br>';
    }
}


<?php


/**
 * Created by PhpStorm.
 * User: dell
 * Date: 2015/12/28
 * Time: 15:34
 */

require_once 'Obj.php';


class ChildObj extends Obj
{

    function __construct()
    {
        //$this->operation1();
        $this->operation2();
        $this->operation3();
    }
}


<?php

/**
 * Created by PhpStorm.
 * User: dell
 * Date: 2015/12/28
 * Time: 16:57
 */
interface Ha
{
    function say();
}


<?php

/**
 * Created by PhpStorm.
 * User: dell
 * Date: 2015/12/28
 * Time: 16:58
 */

require_once 'Ha.php';

class HaImpl implements Ha
{

    function say()
    {
        echo 'say HaImpl.<br>';
    }
}

<?php

/**
 * Created by PhpStorm.
 * User: dell
 * Date: 2015/12/28
 * Time: 17:02
 */
class Math
{
    const pi = 3.14159;

    static function squared($input)
    {
        return $input * $input;
    }
}


<?php

/**
 * Created by PhpStorm.
 * User: dell
 * Date: 2015/12/28
 * Time: 18:13
 */
class MyClass
{
    public $a = 1;
    public $b = 2;
    public $c = 3;

    public function __construct() {
        echo "myClass init'ed successfuly!!!";
    }
}

<?php


/**
 * Created by PhpStorm.
 * User: dell
 * Date: 2015/12/28
 * Time: 15:27
 */


class Obj
{

    private function operation1()
    {
        echo 'operation1<br>';
    }

    protected function operation2()
    {
        echo 'operation2<br>';
    }

    public function operation3()
    {
        echo 'operation3<br>';
    }

    function __construct()
    {
        //echo '__construct<br>';
    }

    function __destruct()
    {
        //echo '__destruct<br>';
    }

}

<?php

/**
 * Created by PhpStorm.
 * User: dell
 * Date: 2015/12/28
 * Time: 17:30
 */
class Person
{
//下面是人的成员属性,都是封装的私有成员
    private $name; //人的名子
    private $sex; //人的性别
    private $age; //人的年龄
//__get()方法用来获取私有属性
    public function __get($property_name)
    {
        echo "在直接获取私有属性值的时候,自动调用了这个__get()方法<br>";
        if(isset($this->$property_name))
        {
            return($this->$property_name);
        }
        else
        {
            return(NULL);
        }
    }
//__set()方法用来设置私有属性
    public function __set($property_name, $value)
    {
        echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值<br>";
        $this->$property_name = $value;
    }

    public function __toString()
    {
        return '' .$this->name . ' ,' . $this->sex;
    }

    /**
     * 感觉有点像检测有没有该函数,或根据相应的来调用其他函数
     * @param $function_name
     * @param $args
     */
    function __call($function_name, $args)
    {
        echo "你所调用的函数:$function_name(参数:<br />";
        var_dump($args);
        echo ")不存在!<br>";

        if($function_name == 'test')
        {
            $this->say();
        }
    }

    public function say()
    {
        echo 'Say haha.<br>';
    }
}


<?php

/**
 * Created by PhpStorm.
 * User: dell
 * Date: 2015/12/28
 * Time: 16:15
 */

namespace obj;

class Say
{
    function say()
    {
        echo 'say 胡言乱语.<br>';
    }
}


<?php


/**
 * Created by PhpStorm.
 * User: dell
 * Date: 2015/12/28
 * Time: 15:36
 */


require_once 'ChildObj.php';

$obj = new ChildObj();

echo '<br>';

require_once '../haha/Say.php';
require_once '../xixi/Say.php';
//require_once '../Say.php';
require_once 'Say.php';

use haha\Say as HaSay;
use \xixi\Say as XiSay;
use \obj\Say;

$say = new HaSay();
$say->say();

$say = new XiSay();
$say->say();

$say = new Say();
$say->say();

echo '<br>';
echo '======><br>';
$c = clone $say;
unset($say);
$c->say();
echo '======><br>';

echo '<br>';

require_once 'HaImpl.php';
$ha = new HaImpl();
$ha->say();

echo '<br>';

require_once 'Math.php';
echo Math::pi . '<br>';

echo Math::squared(8).'<br>';

require_once 'AbsImpl.php';
echo '<br>';
$abs = new AbsImpl();
$abs->say();
$abs->sayAbs();
$abs->sayOther();

echo '<br>';
echo '<br>';

require_once 'Person.php';
$p1 = new Person();
//直接为私有属性赋值的操作,会自动调用__set()方法进行赋值
$p1->name="张三";
$p1->sex="男";
$p1->age=20;
//直接获取私有属性的值,会自动调用__get()方法,返回成员属性的值
echo "姓名:".$p1->name."<br>";
echo "性别:".$p1->sex."<br>";
echo "年龄:".$p1->age."<br>";
echo '<br>';
echo $p1;


echo '<br>';
echo '<br>';

//有关反射,应该和java意思一致
$p1=new Person();
echo '<br>';
//$p1->say();
$p1->test(2,"test");

echo '<br>';
echo '<br>';

//require_once 'MyClass.php';

function __autoload($classname) {//它将在一个还没有被声明的类时自动调用
    $filename = "./". $classname .".php";
    require_once($filename);
}

$myClass = new MyClass();
foreach($myClass as $value)
{
    echo $value.'<br>';
}

?>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值