我为其中一个系统准备API方法。 Api将提供少量语言,但第一个版本将发布为PHP。我想知道什么命名约定应该用于访问器方法。我希望每种语言的api界面非常相似甚至相同。我正在阅读一些用于php的库,并注意到两个命名对话:
1)public accessor as set *()和get *()methods
class MyClass {
private $data;
public function getData() {
...
}
public function setData($value) {
...
}
}
2)退出设置/获取前缀
class MyClass {
private $data;
public function data($value = null) {
if (!empty($value) && is_array($value)) {
$data = $value;
}
return $data;
}
}
我不是php程序员,我有java和c / c ++的经验,所以我想询问有关php的哪些方法?特别是对于php程序员来说更具可读性,清晰度和易懂性的东西。
我想阅读评论和消息。
一切顺利。PS。如果主题是重复的,我很抱歉,想请教我原创主题。
答案 0 :(得分:3)
我几乎从不会看到你使用的第二个提案。
但我看到第一个经常使用。
所以,在这种情况下,我会选择第一个。
答案 1 :(得分:1)
以此为出发点。你需要做更多,但这应该给你一个想法,如果这是一个选项,如何使用__get和__set。
class MyClass {
protected $data = array();
protected $acceptedKeys = array('name', 'job', 'sport');
public function __get($key) {
if(isset($key) && array_key_exists($key, $this->data)) {
return $this->data[$key];
} else {
throw new Exception("can not find {$key}");
}
}
public function __set($key,$val) {
if(in_array($key, $this->acceptedKeys)) {
$this->data[$key] = $val;
} else {
throw new Exception('we will need a key value pair');
}
}
}
try {
$myClass = new MyClass();
$myClass->job = 'sports';
$myClass->name = 'test';
print $myClass->job . "\n";
print $myClass->name;
} catch(Exception $e) {
print "error : " . $e->getMessage();
}