标签: extending-classes

代码点火器2:如何多次扩展CI_Controller?

我已经通过创建一个放在application/core目录中的MY_Controller.php成功扩展了CI_Controller类.

core/My_Controller.php看起来像这样:

class MY_Controller extends CI_Controller {

    function __construct()
    {
        parent::__construct();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,当我创建普通控制器时,它们看起来像这样:

class Home extends MY_Controller {

    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        $this->load->view('home');
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在创建一个管理员后端,我希望为控制器提供一个不同的基类而不是My_Controller.这是我可以有管理员控制器的常用方法(即authentication_check等)

我无法解决的是如何创建另一个扩展CI_Controller的控制器.

目标是管理员控制器扩展与前端控制器不同的基类.

管理基础控制器看起来像这样:

class MY_Admin_Controller extends CI_Controller {

    function __construct()
    {
        parent::__construct();
    }
}
Run Code Online (Sandbox Code Playgroud)

管理页面的普通控制器:

class Admin_home extends MY_Admin_Controller {

    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        $this->load->view('admin_home');
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是要扩展CI_Controller类,必须将控制器文件命名为PREFIX_Controller.php并将其放在core /目录中.但我想要两个控制器类,它们不能具有相同的文件名.

php codeigniter extending-classes

27
推荐指数
2
解决办法
2万
查看次数

ASP.NET C#中的自定义控件

我创建了一个简单的自定义控件,它只从Literal控件继承,并且还没有任何扩展,代码是空的.

命名空间:CustomControls

类名:Literal:System.Web.UI.WebControls.Literal

我接下来要做的是在aspx页面中注册此控件,如下所示:

<%@ Register TagPrefix="web" Namespace="CustomControls" %>
Run Code Online (Sandbox Code Playgroud)

(我在一些教程中读到这是注册它的方法之一,除了web.config等)

毕竟,对我来说没有任何意义,更糟糕的是 - 当我尝试运行带有控件的页面时,我得到一个解析错误'未知服务器标签:web'.

我使用'创建新项目'而不是新网站,以防需要此信息.

可能是我的问题?

提前致谢.

asp.net custom-controls parse-error extending-classes

10
推荐指数
1
解决办法
1万
查看次数

找不到codeigniter MY_Controller

我正在使用Codeigniter.2.1.3进行网站,所以我需要扩展CI_Controller,这样我就可以添加一个方法来执行所有控制器,所以我做了user_guide中的内容:

在application/core文件夹中创建一个名为MY_Controller.php的文件,在其中创建MY_Controller类扩展CI_Controller,更改我的常规控制器以扩展MY_controller,如下所示:MY_controller.php:

class MY_Controller extends CI_Controller{
    protected $page;
    # Constructor
    function __construct (){
        parent::__construct();
        #code shared with all controllers
    }
    public function get_page(){
        #code to get_the right page here
    }
}
Run Code Online (Sandbox Code Playgroud)

常规控制器名为Regular.php:

class Regular extends MY_Controller{
     public function __construct(){
         parent::__construct();
     }
     public function index(){
          $this->get_page();
     }
}
Run Code Online (Sandbox Code Playgroud)

但是出现以下错误:

致命错误:第2行的/var/www/immo/CodeIgniter_2.1.3/application/controllers/regular.php中找不到类'MY_Controller'

php codeigniter controllers extending-classes

8
推荐指数
1
解决办法
2万
查看次数

php匿名类扩展动态

你们中的任何人都知道如何在这些代码中获得效果

 public function create(SomeInterface $obj)
 {
     $class = get_class($obj);
     return new class extends $class {
        //some magic here
     }
 }
Run Code Online (Sandbox Code Playgroud)

很明显,该代码在 PHP 中不起作用。 $obj可以是许多不同类的实例。我想获得一个扩展 $obj 的类的实例。(它将使我能够重载一些基本方法)

php anonymous-class extending-classes

7
推荐指数
1
解决办法
691
查看次数

扩展Ext.data.Store

我试图在我的应用程序中集中我的EXTJS存储配置,但是,我似乎无法弄清楚如何实现这一点.我正在使用ExtJS 4.1.

我有一个基础商店,我希望保留所有重复配置的东西,然后我更具体的商店来保存实际上不同的东西.

Ext.define('My.store.Abstract', {
    extend: 'Ext.data.Store',
    autoload:false,
    proxy: {
        type: 'ajax', 
        reader: {  
            type: 'json',
            root: 'data',
            totalProperty: 'total',  
            successProperty: 'success', 
            messageProperty: 'message'  
        },
        writer: {  
            type: 'json',
            encode: true, 
            writeAllFields: true, 
            root: 'data',
            allowSingle: false 
        },
        simpleSortMode: true
    }
});
Run Code Online (Sandbox Code Playgroud)

然后我想在商店的基础上提供商店特定的东西 -

Ext.define('My.store.Products', {
    extend: 'My.store.Abstract',
    storeId: 'Products',
    model: 'My.model.Product',
    proxy: {
        api: {
            create: '/myurl/create',  
            read: '/myurl/index',
            update: '/myurl/update',  
            destroy: '/myurl/delete' 
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

我发现的是它根本就没有表现.我相信它与代理有关,但我无法追踪它.

这样做的正确方法是什么?我宁愿不在我的应用程序中的350多个商店中复制相同的配置内容(来自我的抽象商店).截至目前,它就是我所拥有的,而且我认为我试图实现一个非常基本的概念......无济于事.

我知道事情不起作用,像pageSize一样基本,甚至是autoLoad ..因为它们根本没有受到尊重.

我玩过构造函数,并调用父代.

任何帮助将不胜感激.

extjs extending extending-classes

6
推荐指数
1
解决办法
7095
查看次数

如何扩展Zend\Db\Sql\Select?

我正在使用MSSQL并希望实现该WITH功能(根据使用ZF2,创建一个WITH语句?).为此,我正在扩展\Zend\Db\Sql\Select类添加添加WITH函数所需的属性和方法.我现在如何告诉我的应用程序使用此Select类而不是Zend类?

一种方法是autoload在我的composer.json文件中指定一个:

"autoload": {
        "psr-4": {
            "Zend\\Db\\Sql\\": "vendor/rpk/Rpk/Zend/Db/Sql"
        }
}
Run Code Online (Sandbox Code Playgroud)

Sql在查看zend文件夹之前,它会查看我的vendor文件夹中的任何名称空间内容,但是这需要我将整个zend select类复制到我的select类中 - 这是不可取的,因为我的类不会从将来的补丁中受益泽德分支.

select extending-classes zend-framework2

6
推荐指数
1
解决办法
117
查看次数

修改Opencart中的控制器而不触及核心?

开发人员是否有办法在Opencart中修改控制器和模型方法而无需触及核心文件?就像WP有powers.php文件的方式一样,你可以修改WP的内容而不必担心将来的升级会覆盖你的代码.

以下是我认为每个开发人员需要在Opencart工具箱中使用的一些示例:

  • 更新值的能力
  • 运行自定义SQL查询
  • 更新程序层的逻辑
  • 进一步扩展系统

php polymorphism opencart extending-classes

5
推荐指数
1
解决办法
2172
查看次数

如何使用 typescript 扩展第三方 Javascript 对象

中午之后的大部分时间我一直在试图弄清楚如何做到这一点,但我要么没有得到什么,要么我处理问题的方法是错误的。

我目前正在开发一个项目,我需要覆盖现有的 Javascript 对象,我已经拥有了 JS 文件。

第三方库有一个形状基类,它是一个作为自执行函数创建的 JS 类。

在库中,有许多从此类派生的形状,它们在幕后看起来像是使用典型的调用/应用路由来扩展形状基类。

在我的代码中,我必须这样做来扩展其中一个形状(我们将其称为 simpleshape),以便实现我自己的自定义形状及其绘制代码。

function MyCustomShape() {
  simpleShape.call(this);
};

shapeUtils.extend(MyCustomShape, simpleShape);

MyCustomShape.prototype.redraw = function (param1, param2) {
  // my custom implementation here
};
Run Code Online (Sandbox Code Playgroud)

“shapeUtils.extend”是形状库中的一个函数,它扩展了该类,我不知道它到底做了什么,而且它被严重混淆了。然而,我最终得到的是一个“MyCustomShape”类,它实现了 simpleShape 类及其属性等,正如您所看到的,我只需重写重绘函数,图形库也会在需要时调用它。

这一切在普通的旧 JavaScript 中都可以正常工作,但是我正在使用 TypeScript,目前为了使其工作,我已将其内联到要使用它的 TS 类内的嵌入式 JS 函数中。

就像是:

class myTsClass {

  // constructor

  // private properties, functions etc
  
  private pointerToMyCustomShape: Function;

  private createMyCustomShape(){

    this.pointerToMyCustomShape = function MyCustomShape() {
      simpleShape.call(this);
    };

    shapeUtils.extend(MyCustomShape, simpleShape);

    MyCustomShape.prototype.redraw = function (param1, param2) {
      // my custom implementation here
    };

  } …
Run Code Online (Sandbox Code Playgroud)

javascript oop class extending-classes

5
推荐指数
1
解决办法
1669
查看次数

PHP子类无法实现相同的接口父类实现

子类是否无法实现相同的接口父类实现的正常行为?我得到了PHP v5.6

interface blueprint {
    public function implement_me();
}

class one implements blueprint {

    public function implement_me() {

    }

}

class two extends one implements blueprint {


}

//no fatal error triggered for class two 
Run Code Online (Sandbox Code Playgroud)

编辑:所以上面的代码工作很好没有错误或警告,即使我blueprint在子类中实现接口two没有方法impement_me()为什么子类不能实现相同的接口父类实现?

如果我实现除了blueprint类之外的其他接口two然后它工作,我必须使用blueprint_new类内部的方法,two否则触发致命错误.这部分按预期工作.

interface blueprint {
    public function implement_me();
}

class one implements blueprint {

    public function implement_me() {

    }

}


interface blueprint_new {
    public function todo();
}


class two extends …
Run Code Online (Sandbox Code Playgroud)

php oop interface extending-classes

3
推荐指数
1
解决办法
1543
查看次数

如何扩展String类?

在javascript中扩展核心类很容易.我觉得它在C#中并不那么容易.我想在String类中添加一些内容,以便我可以执行以下操作:

string s = "the cat's mat sat";
string sql = s.smartsingleQuote();
Run Code Online (Sandbox Code Playgroud)

因此给了我

the cat''s mat sat
Run Code Online (Sandbox Code Playgroud)

这是否可行,还是我必须为此编写一个函数?

c# extending-classes

2
推荐指数
1
解决办法
251
查看次数