【PHP中抽象类和接口详解】教程文章相关的互联网学习教程文章

PHP-类型提示抽象类单例【代码】

一个Type Hint如何在抽象类上返回一个静态单例返回方法,该方法返回被扩展类的实例? 例如,让我们看下面的代码:<?phpabstract class Foo {/** @return Foo */public function init() {static $instance;if ( is_null($instance) ) {$class = get_called_class();$instance = new $class();}return $instance;}}class Bar extends Foo {public $name = "Bar name";}class Baz extends Foo {public $age = 42;}我的目的是让PhpStorm之...

php抽象类【图】

PHP抽象类的定义 抽象类和接口相似,都是比较特殊的类。抽象类也是特殊一种类,接口是一种特殊的抽象类。他们的作用在理解上会困难一点。想要理解抽象类先要理解抽象方法,在面向对象的编程语言中,一个类可以很多子类,而每一个类中至少有一个公共方法作为外部访问的它(父类)的接口,为了方便类之前继承就引入了抽象方法。 什么是抽象类方法? 抽象方法是没有方法体的方法,没有方法体是指方法声明时没有花括号以及其中的内容...

php – 我怎样才能以更好的方式扩展这个抽象类【代码】

我正在尝试为Euro,Doller等不同货币实施货币形成器类.我试图创建一个抽象类,并希望从这个类扩展Euro和Doller类. 因为我是PHP的新手,并且不知道这是否是更好的方式来实现这样的想法.abstract class Currency {private $name;private $symbol;private $decimal;private $decimal_point;private $thousand_sep;function __construct() { }function setName($name) {$this->name = $name;}function getName() {return $this->name...

PHP / Laravel – 无法启动抽象类的扩展【代码】

我很擅长在PHP中使用抽象类和接口. 我正在尝试启动一个抽象类的扩展,但它不起作用.这可能是我遇到的Laravel特定问题. 情况就是这样: >我有一个界面>我有一个实现接口的抽象类>我有’常规’类扩展抽象类>我尝试实现这个课程 这是界面:<?php namespace Collection\Services\Validation;interface SomeInterface {public function with(array $input);public function passes();public function errors();}这是抽象类:<?php namesp...

php – 使用抽象类返回新的$this【代码】

我发现我的代码有些麻烦,并且不明白它为什么会这样做.有人能解释一下吗? 我们有:abstract class AbstractThing {public function search(...){$ret = false;$data = $database->query(...);foreach($data as $values){$item = new $this;$item->fill_with_values($values);$ret []= $item;}return $ret;} }它可以按预期工作,并在成功搜索时返回对象实例:class Thing extends AbstractThing {// ... }$thing = new Thing; $thin...

php – 在抽象类中测试私有方法扩展了另一个【代码】

我正在尝试在抽象类中测试私有方法. 我有三个抽象类:abstract class AbstractClass1 extends AbstractClass2 {private function _privateFunction(){//method's body} }abstract class AbstractClass2 extends AbstractClass3 {public function __construct($param){parent::__construct($param)} }abstract class AbstractClass3 {public function __construct($param = array()) {//something} }测试类:class AbstractClass1Te...

如何使用PHPunit测试抽象类?【代码】

让我们假设我在/var/www/project/calculator.class.php上有一个文件 这是班级namespace App/Module/Calculator; abstract class calculator{static property $add; static property $result; function add($val_a, $val_b){return $a + $b; }}我想为上面的类创建一个测试用例,但似乎无法测试它.我陷入了最基本的阶段.require '/var/www/project/calculator.class.php';class CalculatorTest extends \PHPUnit_Framework_TestCase {...

php – 使用抽象类或特征获取对象的命名空间?【代码】

我有一些代码,如下所示:namespace {trait ns{public function get_ns(){var_dump(__NAMESPACE__);}} }namespace a{class obj{use \ns;} }namespace b{class obj{use \ns;} }namespace {$a = new a\obj;$b = new b\obj;$a->get_ns();$b->get_ns(); }$a-> get_ns();和$b-> get_ns(); dump string(0)“”而不是string(1)“a”和string(1)“b”.如果我使用抽象类而不是特征,行为是相同的. 这显然是因为trait / abstract类是在正式命名...

为什么PHP中需要抽象类?【代码】

我们可以使用简单的继承或接口而不是抽象.为什么我们需要在PHP中使用抽象?我们如何使用抽象隐藏基本功能?我很困惑使用抽象和接口和继承.哪里用哪个?请帮助理解我.解决方法:我认为首先澄清术语是非常重要的,以便更精细地回答这个问题. >继承 >继承实际上广泛应用于许多面向对象的编程原则和概念.它只需要从另一个繁殖出来的东西.因此,无论您是实现接口还是扩展类,您仍然使用一种继承形式.它们不是相互排斥的概念. >界面 >尝试想象...

是否有可能抽象类强制它的子项在PHP中有一个构造函数?【代码】

我想做这样的事情:abstract class Foo {public function __construct(){echo 'This is the parent constructor';}abstract function __construct(); }class Bar extends Foo {// constructor is required as this class extends Foopublic function __construct() {//call parent::__construct() if necessaryecho 'This is the child constructor';} }但是这样做时会出现致命错误:Fatal error: Cannot redeclare Foo::__constru...

抽象类在php中扩展抽象类?【代码】

我正在研究一个简单的抽象数据库类.在我对这个类的使用中,我想要一些实例是一个单例.我想的是有一个不是单例的抽象类,然后将它扩展到另一个单例的抽象类中.这可能吗?推荐的? 编辑:我想要两个几乎完全相同的摘要,除了一个是单身.所以唯一的区别是,一个将具有另一个的所有功能,但是将具有使其表现得像单身的其他属性和方法. 我想为此设置一个基类代码库,因此当我进行更改时,我不必保持两个文件同步.解决方法:在我做事的方式中,我相...

php 接口类,抽象类 的实际作用【图】

很多人搞不清楚接口和抽象类的区别!下面我把我的理解与大家共享! 1.php 接口类:interface 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候php接口类就起到作用了,当我们定义了一个接口类时,它里面的方式是下面的子类必须实现的,比如 : Codeinterface?Shop{??????public?function?buy($gid);??????public?functio...

Phpunit找不到抽象类【代码】

出于某种原因,当我尝试测试抽象类时,我得到PHPUnit_Framework_MockObject_RuntimeException:类“AbstractClass”不存在. 这是代码 AbstractClass.php<?php namespace SD\Project;abstract class AbstractClass {public function handle(){} }AbstractClassTest.php<?php require_once 'AbstractClass.php';use SD\Project\AbstractClass;class AbstractClassTest extends PHPUnit_Framework_TestCase {public function testHand...

php – 抽象类 – 儿童类型【代码】

我正在尝试设计一些类层次结构,并且我在这部分“陷入困境”. 让我们说我有以下课程abstract class Video {const TYPE_MOVIE = 1;const TYPE_SHOW = 2;abstract public function getTitle();abstract public function getType(); }class Movie extends Video {// ...public function getType() {return self::TYPE_MOVIE;} }class Show extends Video {// ...public function getType() {return self::TYPE_SHOW;} }在系统的不同...

php – 在Symfony 3.3中使用DI在抽象类中自动装配,是否可能?【代码】

我正在将Symfony 3.2项目移动到Symfony 3.3并且我想使用DI new features.我有read the docs但是到目前为止我可以使这个工作.请参阅以下类定义:use Http\Adapter\Guzzle6\Client; use Http\Message\MessageFactory;abstract class AParent {protected $message;protected $client;protected $api_count_url;public function __construct(MessageFactory $message, Client $client, string $api_count_url){$this->message = ...