我是OOP的新手,因此在设计PHP类和子类时需要一些帮助,如果需要等等。 我的基类是具有某些属性的Policy类型,并且Policy类的特定子类具有其他属性。我的代码:
<?php
/* Utility for calculating policy value, getting data from a CSV file
* and then generating output in an XML file.
* First we create the class Policy with all the below properties */
// base class with member properties and method
class Policy{
$policy_number;
$start_date;
$membership;
//Method which calculates the policy value depending on the policy type.
protected function calcPolValue() {
//Creates new xml format
$xml = new SimpleXMLElement('<xml/>');
//Ref: http://php.net/manual/en/function.fgetcsv.php
if (($handle = fopen("MyFile.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$policy_number = $data[0];
$start_date = $data[1];
$membership = $data[2];
//checks whether $property1 string contains letter A
if ((strpos($policy_number, 'A') !== false) and ($start_date < 1990)){
//Policy is PolicyTypeA and its code here
}
elseif ((strpos($policy_number, 'B') !== false) and (strpos($membership, 'Y') !== false)){
//Policy is PolicyTypeB and its code here
}
}
fclose($handle);
}
//add the header and save the xml file in the root folder
Header('Content-type: text/xml');
$xml->saveXML("Policy Values.xml");
}
}
//can I write the subclass like this with the additional properties?
class PolicyTypeA extends Policy {
$management_fee;
}
class PolicyTypeB extends Policy {
$management_fee;
}
?>
如何在OOP中设计子类和方法调用?希望我的问题很明确。
答案 0 :(得分:1)
你可以继续这样做,如果没有对你的参数进行上下文命名,你很难看到你在这里真正做了什么来对此事提出更多意见。但是关于你发布的内容会让我觉得你用你用该代码所做的事情来拍摄你想要达到的目标的一点点 - 我不是说它赢了&# 39;工作,只是它看起来(前面缺乏上下文)好像会有更好的方法。
从技术上讲,简单来说:当你扩展一个类时,你将该类中包含的所有内容都继承到扩展它的类中,这样你就可以扩展你想要的方式了,只要知道父类中的任何依赖项都必须也可以在实例化的孩子中遇到。