<?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>';
}
?>