我已经通过创建一个放在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 /目录中.但我想要两个控制器类,它们不能具有相同的文件名.
我创建了一个简单的自定义控件,它只从Literal控件继承,并且还没有任何扩展,代码是空的.
命名空间:CustomControls
类名:Literal:System.Web.UI.WebControls.Literal
我接下来要做的是在aspx页面中注册此控件,如下所示:
<%@ Register TagPrefix="web" Namespace="CustomControls" %>
Run Code Online (Sandbox Code Playgroud)
(我在一些教程中读到这是注册它的方法之一,除了web.config等)
毕竟,对我来说没有任何意义,更糟糕的是 - 当我尝试运行带有控件的页面时,我得到一个解析错误'未知服务器标签:web'.
我使用'创建新项目'而不是新网站,以防需要此信息.
可能是我的问题?
提前致谢.
我正在使用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'
你们中的任何人都知道如何在这些代码中获得效果
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 的类的实例。(它将使我能够重载一些基本方法)
我试图在我的应用程序中集中我的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 ..因为它们根本没有受到尊重.
我玩过构造函数,并调用父代.
任何帮助将不胜感激.
我正在使用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类中 - 这是不可取的,因为我的类不会从将来的补丁中受益泽德分支.
开发人员是否有办法在Opencart中修改控制器和模型方法而无需触及核心文件?就像WP有powers.php文件的方式一样,你可以修改WP的内容而不必担心将来的升级会覆盖你的代码.
以下是我认为每个开发人员需要在Opencart工具箱中使用的一些示例:
中午之后的大部分时间我一直在试图弄清楚如何做到这一点,但我要么没有得到什么,要么我处理问题的方法是错误的。
我目前正在开发一个项目,我需要覆盖现有的 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) 子类是否无法实现相同的接口父类实现的正常行为?我得到了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) 在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)
这是否可行,还是我必须为此编写一个函数?
php ×5
codeigniter ×2
oop ×2
asp.net ×1
c# ×1
class ×1
controllers ×1
extending ×1
extjs ×1
interface ×1
javascript ×1
opencart ×1
parse-error ×1
polymorphism ×1
select ×1