在对某些项目进行编码时,您可能会遇到一些问题,因为您的代码无法正常工作。 这可能是因为几个函数共享一个相似的名称。
这种类型的问题被称为“命名冲突”。 主要是名称空间和前缀是解决这么多人面临的大多数问题的主要答案。
命名空间和前缀非常重要,它可以帮助您在多个函数或类具有相似名称时停止冲突。
考虑到有多少 WordPress 贡献者创建了广泛的主题和插件并为 WordPress 核心做出贡献。
大多数贡献者可能面临同样的问题,因此找到解决方案来帮助他们很重要。
在这篇博客中,我们将了解前缀和命名空间,并了解两者的重要性。 另外,我们会提到 WordPress 开发人员提示 帮助您解决此类问题。 让我们开始吧!
什么是前缀和命名空间?
PHP 的重要特性之一是命名空间,当两个不同的函数或类具有相同的名称时,它是专门为阻止冲突而创建的。 它也被称为命名冲突,它会阻止您的代码而不是运行。
在文件系统中,您会发现文件夹名称作为命名空间。 两个不同的文件可以具有相同的名称。 但是,每个函数和类都可以完美运行,但前提是这两个文件保存在两个不同的文件夹中。
但是,如果这两个文件保存在同一个文件夹中,则会遇到也称为命名空间问题的问题。
实际上,在 WordPress 中,命名空间有两种不同的含义。 上面解释的命名空间是在 PHP 中实际创建的版本。
但是,以前实际开发 WordPress 时 PHP 不支持命名空间。 因此,WordPress 用户正在寻找另一种获得类似效果的方法。
在寻找实现类似效果的解决方案时,他们提出了另一种功能,也称为“前缀”。 在 WordPress 中,前缀是 WordPress 开发人员使用的约定。
在类名或函数前面,WordPress 开发人员会加上前缀。 考虑一个示例,您可以使用 yourcompanyname_user,而不仅仅是编写 user.ideally。
这样,“用户”类的大多数实例都将带有前缀。 通过这样做,您将确保在将主题、插件和核心与用户类合并时没有冲突。
虽然编码前缀和命名空间是最常用的,它们可以帮助您与其他开发人员编写的代码进行交互。
即使没有案例,您也应该遵循这种做法。 遵循此类 WordPress 开发人员提示以消除命名冲突的可能性非常重要。
WordPress 开发人员使用命名空间和前缀的 5 个技巧
如果您想在代码中设置前缀和命名空间,那么您应该遵循这些提示。
1. 使用 PHP 命名空间代替前缀
前缀可以很好地工作,但它有一些缺点。 使用前缀的主要问题是您编写的代码不容易阅读。
这是因为阅读代码的人不会找到您的实际函数或类。 尽管他/她一开始会看到前缀。
使用 PHP 命名空间意味着您将确保代码中的函数和类易于阅读。 但是,阅读您的代码的人会了解该特定函数或类的作用。
如果您的代码被其他一些编码人员(例如开发人员或插件)使用,这将更有帮助。
使用命名空间编写代码的任务会更容易,因为您不编写前缀名称,而只编写类和函数名称。
使用命名空间是一个很好的 WordPress 开发人员提示,可以让您的代码更具可读性和简洁性。
2. 对于你的命名空间,它提出了一个命名约定标准
尚未确定用于创建和命名命名空间的官方标准。 但是确保您编写最好的代码将有助于您的网站及其代码更一致地运行。
将相同的命名约定添加到所有命名空间将帮助您记住和识别哪个命名空间适合哪种类型的项目。
创建命名空间的最佳方法是从供应商或公司名称开始。 在此之后,您可以为每个项目添加子命名空间。
考虑一个示例,您正在公司中创建主题,然后您可以使用 yourcompanyname 作为主命名空间,而子命名空间可以是该特定项目的主题。
让我们看看它会是什么样子
<!--?phpnamespace yourcompanynametheme;
</pre>
<p>With this type of code, you will get an idea of where your classes and functions will be called from. </p>
<h3>3. Encourage Aliases to clean up the code</h3>
<p>PHP is helpful for calling different functions along with similar names from various namespaces. Simply by adding your function's full path, you can achieve this. An example is given below.</p>
<p>But if you are doing this repeatably, your code will be clutter quickly. However, it will be longer and tougher to read. For these functions, it enables you to create aliases instead of PHP. Thus it will make your class easier.</p>
<p>To build an alias, while importing the function or a class you just need to specify it. an example is given below</p>
<pre>
<?php
namespace yourcompanyname;
use yourcompanynameThemeUser as ThemeUser;
class User implements ThemeUser {
}
</pre>
<h3>4. When there is no namespace support you can use prefixes</h3>
<p>PHP namespacing is not supported by every item. It works with </p>
<ul>
<li>Classes</li>
<li>Functions</li>
<li>Certain constants</li>
<li>Interfaces</li>
<li>Traits</li>
</ul>
<p>Other than these you will have to use old form of WordPress prefixing. Which also consist of some items such as image size names, script handles, or database options.</p>
<p>To your namespaces, you need to follow the same naming conventions. </p>
<h3>5. Apply Auto-loading to Streamline Development</h3>
<p>When you call a given class, the auto-loading will automatically pull in class files. Auto-loading is one of the best PHP features. You can save so much of your efforts and time because every time you don't have to write include or require statements. </p>
<p>This can be done with the help of PSR-4 standards in PHP. </p>
<p><strong>Conclusion:</strong><br ?-->
Making a use of namespaces is important even if you are a non tech person or a experience developer. Namespace help you to stop the naming collision and will improve your functions and classes.