如何减少PHP代码?
我必须一次又一次地编写同一段代码,我想知道是否有更好的方法或快捷方式
我正在使用php,我有3个类: class A{ private $data = array( .... ); protected function get($index){ return $data[$index]; } } class B extends A{ } class C extends B{ public function doSth(){ echo A::get('index'); } } 我想要做的是从祖父母班级获取数据. 没问题,除了我需要经常获取数据,并且php代码变得非常庞大(真正的类名很长,并且getter-Functionname非常长) 这就是我写的: databaseCore::getDataByIndex('name') 在C中我会使用这样的预处理器-makro: #define DATA(x)databaseCore :: getDataByIndex((x)) 有没有一种简单的方法来减少我必须编写的代码量? 解决方法
介绍
首先,你同时打破Liskov Substitution Principle和Single-Responsibility Principle, 因此,你将一遍又一遍地面对类似的问题. LSP: 您的A服务器是容器的用途,它可以简单地存储数据.然后你扩展这个,最终破坏是一种关系.这是因为容器不是hanlder. has-a是要走的路.你可以通过构造函数inject a container到那个$handler SRP: 由于您的C同时承担3项职责,因此它肯定违反了单一责任原则.第一个是数据容器,第二个是做B的东西,第三个是做C的东西. 这也称为深度继承,这显然是一种不好的做法,直到它满足SRP和LSP. 一个例子,说明如何在遵守SRP,LSP和DI的同时减少代码重复. class Container { protected $container = array(); public function setName($name) { $this->container['name'] = $name; } public function getName() { return $this->container['name']; } public function setAge($age) { $this->container['age'] = $age; } public function getAge() { return $this->container['age']; } } class Handler { protected $pdo; public function __construct($pdo) { $this->pdo = $pdo; } public function fetchSomething(Container $container) { $query = "SELECT * FROM `table` WHERE `name` =:name AND `age` =:age"; $stmt = $this->pdo->prepare($query); $stmt->execute(array( ':name' => $container->getName(),':age' => $container->getAge() )); return $stmt->fetch(); } } $container = new Container(); $container->setName($_POST['name']); $container->setAge($_POST['age']); $handler = new Handler($pdo); $stuff = $handler->fetchSomething($container); print_r($stuff); 那么,你会在这里获得什么?重用能力,从而减少代码重复. 既然你也做DBcore :: get(‘foo’),你可能想要read this article (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |