我的入队方式是否低效?

时间:2021-08-09 作者:sabbir ahmed

一般来说,我对wordpress和编程有点陌生。我有以下问题。

最近我遇到this article 我想在我正在研究的wordpress主题中使用这种方法。

我编写这个排队类是为了将我的样式和js排队到主题:

<?php

class Enqueue
{

   private function actionEnqueueScripts($function) {
        add_action(\'wp_enqueue_scripts\', function () use ($function) {
            $function();
        });
    }


   public function addStyle($handle, $src = \'\', $deps = array(), $ver = false, $media = \'all\') {
        $this->actionEnqueueScripts(function () use ($handle, $src, $deps, $ver, $media) {
            wp_enqueue_style($handle, $src, $deps, $ver, $media);
        });
        return $this;
    }

}
因此,我可以在函数中添加样式。php如下所示:

require_once \'vendor/class-enqueue.php\';

$theme = new Enqueue;

$theme->addStyle(\'stylesheet-1\', get_template_directory_uri() . \'/dist/assets/css/bundle.css\', array(), time(), \'all\')
      ->addStyle(\'stylesheet-2\', get_template_directory_uri() . \'/dist/assets/css/bundle.css\', array(), time(), \'all\');
我的问题是:这不是有点低效吗?因为,每次我添加css文件时,它不是调用add\\u操作挂钩“wp\\u enqueue\\u scripts”吗?然而,在程序方法中,对于所有样式,我只会将此动作挂钩称为一次?没事吧?

PS:如果可以的话,是否可以向addStyle方法添加条件?像这样

$theme->(if(is_single)) addStyle(\'stylesheet-1\', get_template_directory_uri() . \'/dist/assets/css/bundle.css\', array(), time(), \'all\')
谢谢你的阅读。

1 个回复
SO网友:Mark Kaplun

(旁注)。编写类并不意味着您的代码是OOP。许多人将类的使用与OOP混淆,而类只是一种语法,可以将方法和数据分组在一起。对于OOP,您实际上需要弄清楚您的系统有哪些对象,以及可以对它们执行哪些操作。

糟糕的OOP实际上会导致误导性代码。例如,该帖子的这一行

$theme->addSupport(\'post-thumbnails\');

但实际上,这并不是添加了对帖子缩略图支持的主题,而是添加到wordpress管理中,因此这是更准确的代码

$wp->addThemeSupport($theme, \'post-thumbnails\');

摆脱理论垃圾,我们可以专注于实际问题;)

是的,就像在其他所有糟糕的OOP实现中一样,您会得到非常冗长的代码,没有实际的好处,但是。。。。这只是一种编码风格,如果这种;用类包装所有内容”;让您的工作效率更高您应该努力做到这一点,但OOP本质上没有什么比过程代码和函数代码更好的了。

从效率角度来看,添加多少次操作并不重要,因为与通常与DB访问相关的瓶颈相比,开销很小。随着时间的推移,您读取和维护代码的能力比一些微优化更重要。

相关推荐