标签: extending

Symfony2扩展了DefaultAuthenticationSuccessHandler

我想在身份验证成功后更改默认身份验证过程.我创建了一个在身份验证成功之后和重定向之前调用的服务.

namespace Pkr\BlogUserBundle\Handler;
use Doctrine\ORM\EntityManager;
use Pkr\BlogUserBundle\Service\Encoder\WpTransitionalEncoder;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Log\LoggerInterface;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface;
use Symfony\Component\Security\Http\Authentication\Response;

class AuthenticationSuccessHandler implements AuthenticationSuccessHandlerInterface
{

    protected $entityManager = null;
    protected $logger = null;
    protected $encoder = null;

    public function __construct(EntityManager $entityManager, LoggerInterface $logger, WpTransitionalEncoder $encoder)
    {
        $this->entityManager = $entityManager;
        $this->logger = $logger;
        $this->encoder = $encoder;
    }

    /**
    * This is called when an interactive authentication attempt succeeds. This
    * is called by authentication listeners inheriting from
    * AbstractAuthenticationListener.
    *
    * @param Request $request …
Run Code Online (Sandbox Code Playgroud)

security authentication extending symfony

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

扩展PHP静态类

我已经在这个领域挣扎了几天,我已经得出结论,但由于结论不是我想要的,在我放弃之前,我会试着看看其他人说的话.信仰最后死了......

假设我们有一个超类(称为"超级")和一个子类(称为"Sub").

class Super {
    protected static $title = 'super';
    public static function get_class_name()        
    {
        echo __CLASS__;
    }
    public static function get_title()
    {
        echo self::$title;
    }
}
class Sub extends Super {
    protected static $title = 'sub';
}
Run Code Online (Sandbox Code Playgroud)

现在,你可能会期望Sub扩展Super,Sub现在将继承所有Super的方法,但是,它似乎只接收Sub的方法的引用.

我这样说是因为如果我打电话:

Sub::get_class_name();
Run Code Online (Sandbox Code Playgroud)

输出是"超级",而不是"子".

如果我打电话:

Sub::get_title();
Run Code Online (Sandbox Code Playgroud)

再次,输出是"超级",我甚至在Sub中声明了$ title.

所以这意味着当我调用一个继承的静态函数时,函数的作用域将是超类,而不是被调用的函数(即使你打印了回溯,它也会显示调用是在超类上进行的),并且为了获得作为调用的子类的范围,我需要在该子类内重新声明该方法.那么这种失败的目的是延伸课程,不是吗?

所以我的问题是,我可以扩展一个静态类,调用一个继承的方法并具有子类的范围吗?或者至少能够识别它的类名?如果没有,我为什么要扩展静态类?

谢谢!

php oop class extending

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

实体框架4,继承vs扩展?

每种方法有哪些优点/缺点?

我知道我已经在书籍或本网站的某处读过为什么使用表继承对于Entity Framework 4来说很糟糕.

例如,为什么不创建一个具有entityId,datecreated,datemodified的表,然后让其他所有类继承实体框架中的那个?然后我的所有其他实体的表不需要这些列.然后我可以让一个人类继承那个基类,然后一个特定的人继承人.

除了编写一个较小的SQL脚本来生成数据库之外,我不确定这个的好处......

我看到的缺点是,它直接在SQL中查询/查看数据是一个很大的痛苦(所有相关信息在这么多表中被打破),我也问过我的朋友说:

更改应用程序代码比更改和迁移数据库数据更容易,因为大多数经验不足的开发人员接近他们接受继承的问题.我第一次开始开发的时候也是这样做的.它在逻辑上是有道理的.但是,一旦开发很长一段时间,你就会发现委托是最好的方法(服务在soa的情况下调用服务),而且单一用途的服务提供了比继承更多的重用."

这对我来说也很有意义.

所以

1)一般来说,继承与扩展的利弊是什么
2)在上面的具体例子中,什么更合适?
3)如果我的例子对于其中一个或两个都很糟糕,那么使用继承和使用扩展的好例子是什么?

我之前使用过这两种情况,但由于我远没有经验丰富,我仍然不确定如何处理所有情况.

10个投票,8个收藏,超过100个观点,没有人可以扩展?=(.

.net inheritance entity-framework extending entity-framework-4

18
推荐指数
2
解决办法
2698
查看次数

将构造函数原型添加到javascript对象

我有几个像这样的javascript对象:

var object = {
    name: "object name",
    description: "object description",
    properties: [
        { name: "first", value: "1" },
        { name: "second", value: "2" },
        { name: "third", value: "3" }
    ]
};
Run Code Online (Sandbox Code Playgroud)

现在我想将这些对象更改为更智能的对象(添加一些方法等).
起初我做了一个像这样的构造函数:

SmartObject = function( object ){

    this.name = object.name;

    this.description = object.description;

    this.properties = object.properties;

};

SmartObject.prototype.getName = function(){
    return this.name;
};

SmartObject.prototype.getDescription = function(){
    return this.description;
};

SmartObject.prototype.getProperies = function(){
    return this.properties;
};
Run Code Online (Sandbox Code Playgroud)

然后我使用这个构造函数将我的对象更改为这样的SmartObject实例:

var smartObject = new SmartObject( object );
Run Code Online (Sandbox Code Playgroud)

这似乎是正确的面向对象的javascript代码,但这感觉非常复杂,因为我实际想要做的是添加一些方法,现在object …

javascript methods object extending

18
推荐指数
1
解决办法
643
查看次数

圆形ArrayList(扩展ArrayList)

所以我的程序需要一种圆形ArrayList.

关于它的只有圆形的东西必须是get(int index)方法,这是原始的:

    /**
     * Returns the element at the specified position in this list.
     *
     * @param  index index of the element to return
     * @return the element at the specified position in this list
     * @throws IndexOutOfBoundsException {@inheritDoc}
     */ 
    public E get(int index) {
        rangeCheck(index);

        return elementData(index);
    }
Run Code Online (Sandbox Code Playgroud)

如果index为-1,则应该获取索引为ArrayList.size() - 1的元素,如果index为ArrayList.size(),则应获取索引为0的元素.

我想到的最简单的实现方法就是简单地从java.util包中扩展ArrayList,然后重写get(int index),这样它就不会为上面的两个索引抛出IndexOutOfBoundsException,而是将它们改为我想要的.它会为任何其他超出范围的索引抛出IndexOutOfBoundsException.

但是,由于elementData(索引)访问a

private transient Object[] elementData;
Run Code Online (Sandbox Code Playgroud)

我无法使它工作,因为我的班级没有看到它,因为它是私人的.

此外,我不想为此使用任何外部库,只是因为我认为没有一个适合我的需求,因为我不想要一个真正的circularArray,但只是它的一部分功能,其余部分是常规的ArrayList.

所以我有两个问题:

我怎样才能做到这一点?有没有办法做到这一点,而无需将整个ArrayList类与AbstractCollection,Collection和Iterable一起复制到我的程序中?这对我来说似乎是糟糕的设计.

如果我能以某种方式使它发挥作用,还有什么我应该注意的吗?如果我进行上述更改,是否会以我希望的方式更改类的行为,还是会有任何其他不需要的行为更改?

编辑: 谢谢你的回答,这就是我所做的:

import java.util.ArrayList;

public class CircularArrayList<E> extends ArrayList<E>
{
    private static final long serialVersionUID …
Run Code Online (Sandbox Code Playgroud)

java arraylist extending circular-list

16
推荐指数
3
解决办法
5万
查看次数

使用Doctrine2在Symfony2中扩展实体

我很难找到一种方法来使用Doctrine2作为ORM在Symfony2中的bundle中适当地扩展实体.

目前,我发现有三种方法可以使用Doctrine2作为ORM在Symfony2中扩展实体.Mapped Superclass,Single Table InheritanceClass Table Inheritance.这些都不适用于我想要做的事情.

我有两个Bundle:UserBundle和BlogBu​​ndle.我希望能够在没有BlogBu​​ndle的项目中使用UserBundle,但BlogBu​​ndle将始终用于具有User Bundle的项目中.如果BlogBu​​ndle依赖于UserBundle,那就没问题,但不是相反.

我有两个实体: BlogBu​​ndle\Entity\Post和UserBundle\Entity\User

关系: 用户和博客帖子之间需要有一对多的关系.这是通过BlogBu​​ndle\Entity\Post对象(表)上的Author_ID属性(列)实现的,该对象映射到UserBundle\Entity\User.id

问题: 我可以直接从BlogBu​​ndle中调用UserBundle\Entity\User实体,并使用Uni-Directional映射实现我正在寻找的东西.这不允许我从User对象中访问用户的所有帖子.我可以通过自定义查询访问数据,但这不像用户通过用户对象访问帖子那样干净.

我想要做的是从BlogBu​​ndle中扩展UserBundle\Entity\User对象,并将方法和属性添加到此对象,以建立BlogBu​​ndle中使用的一对多映射.这些都没有持久化,它只是定义了关系,并允许我逻辑上访问用户在实现BlogBu​​ndle和UserBundle的应用程序中创建的所有帖子,方法是向博客包中的User对象添加所需的功能(从而避免依赖从UserBundle到BlogBu​​ndle).

当我创建BlogBu​​ndle\Entity\User对象并扩展UserBundle\Entity\User时,我必须声明@ORM\Table(name ="usertablename").如果不这样做,任何访问BlogBu​​ndle\Entity\User对象的尝试都将无法访问数据库.由于扩展对象中没有任何添加内容持续存在,因此在捆绑包中可以正常工作.这个问题是当我调用"php app/console doctrine:schema:update --force"时,由于两个实体试图映射到&创建同一个表,因此存在冲突.我已经尝试使用最近实现的ResolveTargetEntityListener功能,但这与Mapped Superclas,STI和CTI一起强制从UserBundle强制依赖BlogBu​​ndle.

以下是我的目标,以帮助说明我的设置.它们的缩写是为了清楚起见.我意识到一些语义不正确,但它的目的是传达思想和配置.

UserBundle \实体\用户

@ORM\Table(name="app_user")
@ORM\Entity
class User implements UserInterface
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

BlogBu​​ndle \实体\帖子

@ORM\Table(name="app_post")
@ORM\Entity
class Post
{
    ...

    @ORM\Column(name="author_id", type="integer")
    protected $author_id;

    @ORM\ManyToOne(targetEntity="\App\BlogBundle\Entity\User", inversedBy="posts")
    @ORM\JoinColumn(name="author_id", referencedColumnName="id")
    protected $author;
}
Run Code Online (Sandbox Code Playgroud)

BlogBu​​ndle \实体\用户

use App\UserBundle\Entity\User as BaseUser
@ORM\Entity
@ORM\table(name="app_user")
class User extends BaseUser
{
    ....

    @ORM\OneToMany(targetEntity="App\BlogBundle\Entity\Post", mappedBy="author")
    protected $posts;

    public function __construct() …
Run Code Online (Sandbox Code Playgroud)

entities extending symfony doctrine-orm

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

如何扩展现有的jQuery UI小部件?

我正在使用jQuery v1.8.3和jQuery UI v1.9.2.我想通过添加和覆盖一些选项和方法来扩展现有的jQuery UI小部件(在我的情况下是自动完成小部件),但保留其他功能,如官方发行版中的那些.我怎样才能使其成为"适当的"(也许是"标准")方式?


PS:我搜索在网络上(1,2,...),我发现文件大多涉及到创建一个新的jQuery UI部件而不是扩展现有的一个.

javascript jquery plugins jquery-ui extending

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

在Scala中扩展匿名类型的目的是什么?

我正在尝试更好地理解Scala,我似乎无法为以下代码找到有效的用例:

class C extends { def m() { /* ... */ } }
Run Code Online (Sandbox Code Playgroud)

允许这种结构的理由是什么?

谢谢!

scala anonymous-types extending

11
推荐指数
2
解决办法
1109
查看次数

尝试编译C扩展模块时缺少Python.h.

我正在按照本教程学习如何使用C\C++代码扩展Python.

名为"使用GCC for Microsoft Windows构建扩展模块"的部分对我失败,出现以下错误:

fatal error: Python.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

名为"使用Microsoft Visual C++构建扩展模块"的部分也失败,但出现类似的错误:

fatal error C1083: Cannot open include file: 'Python.h': No such file or directory
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这个问题?

c++ python compilation extending

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

扩展活动类

我对Android(Java)开发完全不熟悉,我对此感到非常兴奋!谷歌的开发者指南非常棒,我在很短的时间内学到了很多东西.它甚至让我在夜间保持清醒;)

今天我经历了制作菜单,有一些我无法理解的东西.这是关于扩展课程.指南说:

提示:如果您的应用程序包含多个活动,并且其中一些活动提供相同的"选项"菜单,请考虑创建一个除onCreateOptionsMenu()和onOptionsItemSelected()方法之外不执行任何操作的活动.然后为应共享相同选项菜单的每个活动扩展此类.这样,您只需管理一组代码来处理菜单操作,每个后代类都会继承菜单行为.

我没有得到的是如何扩展一个类......假设我有一个MainActivity和一个SubActivity.我想在两个活动中都有相同的菜单,所以我制作了MainMenuActivity.如何为这两个活动扩展此类?

是的我在网上搜索但找不到任何可用的.我真的很想了解它,所以我希望任何人都可以帮我解决一些样本代码+解释.先感谢您!!

android class extending android-activity

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