php中访问器方法的命名约定

时间:2012-02-13 20:10:31

标签: php naming-conventions

我为其中一个系统准备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。如果主题是重复的,我很抱歉,想请教我原创主题。

2 个答案:

答案 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();
}