首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >后期静态绑定: web开发中常用的哪种语言支持它?

问后期静态绑定: web开发中常用的哪种语言支持它?
EN

Stack Overflow用户
提问于 2008-12-15 03:24:08
回答 4查看 1.3K关注 0票数 2

最近,我看到了很多关于PHP缺乏后期静态绑定的讨论,直到5.3。

据我所知,在语言具备此特性之前,不可能实现像ActiveRecord这样的东西。

所以,我很好奇:

  • 哪些语言支持它,特别是那些通常与web开发相关的语言,如Python、Ruby、Java、C# (JavaScript?)。
  • 哪种方法是经常使用的?
EN

回答 4

Stack Overflow用户

发布于 2008-12-15 05:43:16

如果您想要做一些工作,当然这有点费时,但是当php 5.3变得可用并主流化时,可以很容易地删除它,您可以尝试以下代码。

代码语言:javascript
复制
class Specific_Model extends Model{

    public static function GetAll($options = null){

        parent::GetAll($options, get_class());

    }

}


class Model{

    public static function GetAll($options = null, $class = null){

       if(is_null($class)) $class = get_class();  

       /* Do stuff here */

    }

}

然后你可以使用以下代码..。

代码语言:javascript
复制
Specific_Model::GetAll($options);

当移到php5.3时,可以很容易地去掉多余的代码。

票数 4
EN

Stack Overflow用户

发布于 2008-12-16 12:54:02

“后期静态绑定”的概念是修补PHP静态声明类这一事实的一个黑客。大多数动态语言都有对象系统,其中类是对象。另一方面,PHP使代码和运行时完全分离(如C/C++)。这有各种各样的奇怪的含义,我们会更好地没有。

票数 0
EN

Stack Overflow用户

发布于 2009-04-18 05:28:40

如果没有后期的静态绑定,PHP解释器就会将函数hello()绑定到类A,而程序员在B类上清楚地表示函数时,缺少后期静态绑定将导致打印"hello“,而不是”拜“,尽管在类B上调用了hello()。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/367400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档