【问题标题】:PHP replace $this-> with something shorter?PHP用更短的东西替换$this->?
【发布时间】:2017-01-29 06:54:38
【问题描述】:

谁能想到某种预处理或可以采取的措施来减少这种可怕的冗长?

不断输入$this-> 让我发疯,为什么不能用与$ 不同的符号来实现呢? $ 用于正常作用域 £ 用于$this-> 作用域。

谢谢。

【问题讨论】:

  • 可以使用静态类吗?我有一个名为 H 的静态帮助程序类,每次需要它时,我都会简单地输入 H::function(params) ...
  • 静态类可以很好看。 :)
  • 静态类不是解决@Shammoo 处理不便的一站式解决方案。你假设他不处理类实例。
  • 我已从问题中删除了您的答案,因为您已(正确地)提供了该答案作为答案。你可能被否决了,因为这个问题似乎是基于一个可疑的命题——在我看来,输入$this-> 并不难,甚至可以在必要时将其添加为编辑器快捷方式。 (FWIW,我没有投票)。
  • 我再次编辑,因为我们不使用像 [solved] 和 [answered] 这样的标题黑客,它们在正文中也不是必需的。我现在(不情愿地)删除了php 标签,但这意味着它需要再次编辑才能将其放回原处。它一个 PHP 问题,它需要那个标签 - 在你接受你的答案后,我会在一两天内尝试替换它。

标签: verbose


【解决方案1】:

不幸的是,这实际上是不可能的。除非您创建自己的 PHP 版本并更改解释器(出于多种原因,我强烈建议您不要这样做)。

还将$this-> 更改为您自己的东西会极大地损害您的代码兼容性。特别是如果将来有人要处理您的代码。

如果您真的很难处理这个问题,我强烈建议您安装像 PHPStorm 这样的 IDE 或任何其他具有自动完成功能的 IDE,或者设置您自己的宏来为您输入。

【讨论】:

  • 我想我会这样。遗憾的是没有框架或类似的东西来处理这个问题。这是一种很好的通用语言,但它确实迫使我编写看起来像意大利面条的代码。
  • @Shammoo 对于某人来说看起来像是意大利面条代码的东西当然对每个人来说都是不同的。但是像 PSR2 (php-fig.org/psr/psr-2) 这样的编码标准。如果您在编写代码的格式方面遇到问题,这真的很有帮助。作为额外的奖励,每个需要使用您的代码的人都可以使用该标准。
  • 我符合PSR2,php强制的代码只是冗长而垃圾;特别是如果您试图维护依赖注入等标准......
【解决方案2】:

Sed 来救援!这是我压缩一些冗长的代码。

运行.sh

#!/bin/bash
echo Running server
for f in ./src/*.php
do
    sed -f ./preprocess.sed $f > ./live/`basename $f`
done

cd live
php ./server.php

预处理.sed

s/£/$this->/g

之前/之后

    case TableState::INIT:
        $this->gone->reset($this->tableSpot, $this->tableNote);
        $this->state = TableState::WAITING;
        break;

之后

    case TableState::INIT:
        £gone->reset(£tableSpot, £tableNote);
        £state = TableState::WAITING;
        break;

正如其他人所说,这会使您的代码无法正常工作,因此您需要就如何预处理做足够的文档。但我认为源目录中的sed -f ../preprocessor.sed ./* 将使其成为正常代码。

【讨论】:

  • 嗯,这对您来说减少了击键次数,但对于需要接触您的代码的其他开发人员来说,可读性较差。并且任何现代 IDE 都会抛出各种语法警告(NetBeans、Eclipse、PHPStorm 等),从而更难发现意外错误。
  • 是的,用户必须在 IDE 中定义扩展语法。我知道这有时不是一件容易的事。对于大型共享代码库,我显然不建议这样做。当您需要更易于管理的代码时,它基本上只适用于中等独立项目。
  • 另外,这与击键无关。这是关于可读性。 $this-> 一行中的 3 次使得翻译正在发生的事情变得更加困难。另一个优点是我通过这种方式遇到的错误要少得多。发现 $ 和 £ 之间的区别比识别缺失的 $this-> 更容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
  • 2013-11-12
相关资源
最近更新 更多