<span> 1</span> <?<span>php
</span><span> 2</span>
<span> 3</span> <span>
</span>
<span> 12</span>
<span> 13</span>
<span> 14</span> <span>
</span>
<span> 18</span>
<span> 19</span> <span>
interface
</span><span> fruit{
</span><span> 20</span>
<span> 21</span> <span>
</span>
<span> 24</span> <span>
public
</span> <span>
function
</span><span> grow();
</span><span> 25</span>
<span> 26</span> <span>
</span>
<span> 29</span> <span>
public
</span> <span>
function
</span><span> plant();
</span><span> 30</span>
<span> 31</span> <span>
</span>
<span> 34</span> <span>
public
</span> <span>
function
</span><span> harvest();
</span><span> 35</span>
<span> 36</span> <span>
</span>
<span> 39</span> <span>
public
</span> <span>
function
</span><span> eat();
</span><span> 40</span>
<span> 41</span> <span>}
</span><span> 42</span>
<span> 43</span>
<span> 44</span> <span>
</span>
<span> 49</span> <span>
class
</span> apple <span>
implements
</span><span> fruit{
</span><span> 50</span>
<span> 51</span> <span>
<span> 52</span> <span>
private
</span> <span>
$treeAge
</span><span>;
</span><span> 53</span>
<span> 54</span> <span>
<span> 55</span> <span>
private
</span> <span>
$color
</span><span>;
</span><span> 56</span>
<span> 57</span> <span>
public
</span> <span>
function
</span><span> grow(){
</span><span> 58</span> <span>
echo
</span>
"grape grow"
<span>;
</span><span> 59</span> <span> }
</span><span> 60</span>
<span> 61</span> <span>
public
</span> <span>
function
</span><span> plant(){
</span><span> 62</span> <span>
echo
</span>
"grape plant"
<span>;
</span><span> 63</span> <span> }
</span><span> 64</span>
<span> 65</span> <span>
public
</span> <span>
function
</span><span> harvest(){
</span><span> 66</span> <span>
echo
</span>
"grape harvest"
<span>;
</span><span> 67</span> <span> }
</span><span> 68</span>
<span> 69</span> <span>
public
</span> <span>
function
</span><span> eat(){
</span><span> 70</span> <span>
echo
</span>
"grape eat"
<span>;
</span><span> 71</span> <span> }
</span><span> 72</span>
<span> 73</span> <span>
<span> 74</span> <span>
public
</span> <span>
function
</span><span> getTreeAge(){
</span><span> 75</span> <span>
return
</span> <span>
$this
</span>-><span>treeAge;
</span><span> 76</span> <span> }
</span><span> 77</span>
<span> 78</span> <span>
<span> 79</span> <span>
public
</span> <span>
function
</span> setTreeAge(<span>
$age
</span><span>){
</span><span> 80</span> <span>
$this
</span>->treeAge = <span>
$age
</span><span>;
</span><span> 81</span> <span>
return
</span><span> trie;
</span><span> 82</span> <span> }
</span><span> 83</span>
<span> 84</span> <span>}
</span><span> 85</span>
<span> 86</span> <span>
</span>
<span> 91</span> <span>
class
</span> grape <span>
implements
</span><span> fruit{
</span><span> 92</span>
<span> 93</span>
<span> 94</span> <span>
<span> 95</span> <span>
private
</span> <span>
$seedLess
</span><span>;
</span><span> 96</span>
<span> 97</span> <span>
public
</span> <span>
function
</span><span> grow(){
</span><span> 98</span> <span>
echo
</span>
"apple grow"
<span>;
</span><span> 99</span> <span> }
</span><span>100</span>
<span>101</span> <span>
public
</span> <span>
function
</span><span> plant(){
</span><span>102</span> <span>
echo
</span>
"apple plant"
<span>;
</span><span>103</span> <span> }
</span><span>104</span>
<span>105</span> <span>
public
</span> <span>
function
</span><span> harvest(){
</span><span>106</span> <span>
echo
</span>
"apple harvest"
<span>;
</span><span>107</span> <span> }
</span><span>108</span>
<span>109</span> <span>
public
</span> <span>
function
</span><span> eat(){
</span><span>110</span> <span>
echo
</span>
"apple eat"
<span>;
</span><span>111</span> <span> }
</span><span>112</span>
<span>113</span> <span>
<span>114</span> <span>
public
</span> <span>
function
</span><span> getSeedLess(){
</span><span>115</span> <span>
return
</span> <span>
$this
</span>-><span>seedLess;
</span><span>116</span> <span> }
</span><span>117</span>
<span>118</span> <span>
<span>119</span> <span>
public
</span> <span>
function
</span> setSeedLess(<span>
$seed
</span><span>){
</span><span>120</span> <span>
$this
</span>->seedLess = <span>
$seed
</span><span>;
</span><span>121</span> <span>
return
</span> <span>true</span><span>;
</span><span>122</span> <span> }
</span><span>123</span>
<span>124</span> <span>}
</span><span>125</span>
<span>126</span>
<span>127</span> <span>
</span>
<span>131</span> <span>
class
</span><span> farmer{
</span><span>132</span>
<span>133</span> <span>
<span>134</span> <span>
public
</span> <span>
static
</span> <span>
function
</span> factory(<span>
$fruitName
</span><span>){
</span><span>135</span> <span>
switch
</span> (<span>
$fruitName
</span><span>) {
</span><span>136</span> <span>
case
</span>
'apple'
:
<span>137</span> <span>
return
</span> <span>
new
</span><span> apple();
</span><span>138</span> <span>
break
</span><span>;
</span><span>139</span> <span>
case
</span>
'grape'
:
<span>140</span> <span>
return
</span> <span>
new
</span><span> grape();
</span><span>141</span> <span>
break
</span><span>;
</span><span>142</span> <span>
default
</span>:
<span>143</span> <span>
throw
</span> <span>
new
</span> badFruitException(
"Error no the fruit"
, 1<span>);
</span><span>144</span> <span>
break
</span><span>;
</span><span>145</span> <span> }
</span><span>146</span> <span> }
</span><span>147</span> <span>}
</span><span>148</span>
<span>149</span> <span>
class
</span> badFruitException <span>
extends
</span> <span>Exception</span><span>{
</span><span>150</span> <span>
public
</span> <span>
$msg
</span><span>;
</span><span>151</span> <span>
public
</span> <span>
$errType
</span><span>;
</span><span>152</span> <span>
public
</span> <span>
function
</span> __construct(<span>
$msg
</span> =
''
, <span>
$errType
</span> = 1<span>){
</span><span>153</span> <span>
$this
</span>->msg = <span>
$msg
</span><span>;
</span><span>154</span> <span>
$this
</span>->errType = <span>
$errType
</span><span>;
</span><span>155</span> <span> }
</span><span>156</span> <span>}
</span><span>157</span>
<span>158</span>
<span>159</span> <span>
</span>
<span>162</span> <span>
try
</span><span>{
</span><span>163</span> <span>
$appleInstance
</span> = farmer::factory(
'apple'
<span>);
</span><span>164</span> <span>var_dump</span>(<span>
$appleInstance
</span><span>);
</span><span>165</span> }<span>
catch
</span>(badFruitException <span>
$err
</span><span>){
</span><span>166</span> <span>
echo
</span> <span>
$err
</span>->msg .
"_______"
. <span>
$err
</span>-><span>errType;
</span><span>167</span> }