gabrieljmj / prototype
dev-master
2014-11-01 01:31 UTC
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is auto-updated.
Last update: 2024-09-16 03:21:23 UTC
README
此库允许您创建原型,几乎与JavaScript中的方式相同。
## 测试 对不起,我知道这是错误的,但我在库之后留下了测试。为什么?因为我写测试时遇到了问题。
## 1. 创建对象 对象是通过函数创建的。这些函数将返回一个对象。所有对象都注册在名为 \Gabrieljmj\Prototype\Prototype
的类中。
require_once 'autoload.php'; use Gabrieljmj\Prototype\Prototype; function Person() { return Prototype::getInstance()->prot('Person'); }
要设置方法,需要将变量 $self
设置为全局,并像在面向对象编程中使用 $this
一样使用它。
Person()->on = 1; Person()->setName = function ($name) { global $self; $self->name = $name; }; Person()->getName = function() { global $self; return $self->name; };
因此,您可以实例化它并执行方法,然后获取属性
$user1 = new Person(); $user1->setName('Hansel'); $user2 = new Person(); $user2->setName('Gretel'); echo $user1->getName() . ' and ' . $user2->getName(); //Hansel and Gretel
## 2. 扩展 扩展几乎与JavaScript相同。只需设置属性 $prototype
function Employee() { return Prototype::getInstance()->prot('Employee'); } Employee()->prototype = new Person(); Employee()->setJobTitle = function ($jobtitle) { global $self; $self->jobTitle = $jobtitle; }; Employee()->getJobTitle = function () { global $self; return $self->jobTitle; }; $employee = new Employee(); $employee->setName('Jhon'); $employee->setJobTitle('Developer'); echo 'Hi! My name is ' . $employee->getName() . ' and I work as ' . $employee->getJobTitle() . '.'; //Hi! My name is Jhon and I work as Developer.
### 2.1. instanceof
var_dump($person instanceof Employee); //bool(false) var_dump($employee instanceof Person); //bool(true)