FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
DesignPatternsPHP/Prototype/Prototype.php at master · Ti-webdev/DesignPatternsPHP · GitHub
Ti-webdev
/
DesignPatternsPHP
Public
forked from
DesignPatternsPHP/DesignPatternsPHP
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
DesignPatternsPHP
/
Prototype
/
Prototype.php
Copy path
More file actions
More file actions
Latest commit
History
History
History
65 lines (51 loc) · 1.13 KB
Breadcrumbs
DesignPatternsPHP
/
Prototype
/
Prototype.php
Copy path
File metadata and controls
65 lines (51 loc) · 1.13 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
namespace
DesignPatterns
;
/**
* Prototype pattern
*
* Purpose:
* to avoid the cost of creating objects the standard way (new Foo()) and instead create a prototype and clone it
*
* Examples:
* - Large amounts of data (e.g. create 1,000,000 rows in a database at once via a ORM)
*
*/
abstract
class
BookPrototype
{
protected
$
_title
;
protected
$
_category
;
/**
* @abstract
* @return void
*/
abstract
public
function
__clone
();
public
function
getTitle
()
{
return
$
this
->
_title
;
}
public
function
setTitle
(
$
title
)
{
$
this
->
_title
=
$
title
;
}
}
class
FooBookPrototype
extends
BookPrototype
{
protected
$
_category
=
'
Foo
'
;
public
function
__clone
()
{
}
}
class
BarBookPrototype
extends
BookPrototype
{
protected
$
_category
=
'
Bar
'
;
public
function
__clone
()
{
}
}
$
fooPrototype
=
new
FooBookPrototype
();
$
barPrototype
=
new
BarBookPrototype
();
// now lets say we need 10,000 books of foo and 5,000 of bar ...
for
(
$
i
=
0
;
$
i
<
10000
;
$
i
++) {
$
book
=
clone
$
fooPrototype
;
$
book
->
setTitle
(
'
Foo Book No
'
.
$
i
);
}
Back
|
FazBrowse Home
|
New Git URL