-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathX.php
More file actions
95 lines (89 loc) · 2.14 KB
/
X.php
File metadata and controls
95 lines (89 loc) · 2.14 KB
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
/**
* Helps you generate XML text
*
* $x->div(array('id' => 'isi'), $x->span('asdf'),
* $x->div(
* $x->span('george'),
* $x->img(array('src' => 'asdf.jpg'))
* )
* );
* // Will result <div id="isi"><span>asdf</span><div><span>george</span><img src="asdf.jpg" /></div></div>
*/
class X {
/**/
public function __call($name, $params) {
$prex = '';
if (is_array(current($params))) { // To specify tag attributes, assign those as array in first argument
$args = array_shift($params);
foreach ($args as $k => $v) {
$prex .= ' ' . $k . '="' . str_replace('"', '"', $v) . '"';
}
}
if (empty($params)) { // Empty tags will be shown as <tag />
return "<$name$prex />";
}
return "<$name$prex>" . implode('',$params) . "</$name>";
}
// open tag only
public function _o($name, $args = array()) {
$prex = '';
foreach ($args as $k => $v) {
$prex .= ' ' . $k . '="' . str_replace('"', '"', $v) . '"';
}
return "<$name$prex>";
}
// close tag only
public function _c($name) {
return "</$name>";
}
/**/
// If PHP >= 5.3.0
/**
public static function __callStatic($name, $params) {
$prex = '';
if (is_array(current($params))) { // To specify tag attributes, assign those as array in first argument
$args = array_shift($params);
foreach ($args as $k => $v) {
$prex .= ' ' . $k . '="' . str_replace('"', '"', $v) . '"';
}
}
if (empty($params)) { // Empty tags will be shown as <tag />
return "<$name$prex />";
}
return "<$name$prex>" . implode('',$params) . "</$name>";
}
// open tag only
public static function _o($name, $args = array()) {
$prex = '';
foreach ($args as $k => $v) {
$prex .= ' ' . $k . '="' . str_replace('"', '"', $v) . '"';
}
return "<$name$prex>";
}
// close tag only
public static function _c($name) {
return "</$name>";
}
/**/
}
/* Example: *
$x = new X;
echo
$x->div(array('id' => 'isi'),
$x->span('asdf'),
$x->div(
$x->span('george'),
$x->img(array('src' => 'asdf.jpg'))
)
);
/**/
/* If PHP >= 5.3.0
X::div(array('id' => 'isi'),
X::span('asdf'),
X::div(
X::span('george'),
X::img(array('src' => 'asdf.jpg'))
)
);
*/