PHP中的类名

Posted

技术标签:

【中文标题】PHP中的类名【英文标题】:Class name in PHP 【发布时间】:2015-05-04 16:42:00 【问题描述】:

您好,

我要的类名很具体。喜欢:form.class.phpdatabase.class.php,我通过自动加载访问它们。

但有时我需要一个不具体的功能。

例如:获取当前用户的头像两个用户之间的关系

我正在为这些函数使用 function.class.php,但 function.class.php 正在成长。

我该怎么办?

请注意:英语不是我的母语。

最好的问候。

【问题讨论】:

嗨,凯雷姆。我不确定是不是你对我最近的支持率飙升负责,但通常这要归功于对你自己的问题的回答(并接受它们;))。不确定它是否遵循 SO 指导方针......仍然......谢谢! :) @Bono 哇。这些可能明天都会被退回,但如果不是……哈哈哈哈哈! 感谢您的友好回答。你@ChrisBaker 你的代表真棒。顺便说一句,您的链接非常好。我已经读过了。 【参考方案1】:

如果你有用户,我假设你有一个 User 类。如果你不这样做,你应该考虑制作一个。在这个用户类中,您可以存储您所有的 User 方法,例如:

class User
    private $avatar;    

    public function getAvatar()
        return $this->avatar;
    

    public function setAvatar($avatar)
        $this->avatar = $avatar;
    

    //etc.

你可以这样使用它们:

$user->getAvatar()
$user->getRelation($other_user);

编辑 感谢 Chris Baker 在 cmets 中的补充。他为刚开始使用 OOP 的人指定了 this article。我也建议看看它!

【讨论】:

...我不太确定这个建议。你最终会得到不是对象的巨大神类,而是大量不相关函数的伪命名空间。在 SOLID 原则中,一个对象应该只有一个职责。您如何轻松地用 100 个方法替换 User 类?您如何管理这些函数都具有的依赖关系?这不是好的做法。 我自己从未见过需要将这些类提升到 100 个方法。我通常将这些简单的类用于 getter 和 setter,并将更复杂的函数拆分为更适合工作的类(数据库插入等)。我认为现在这会让 OP 上路。到目前为止,这个类只有一个职责,那就是处理用户数据。不过我同意你的看法,拥有庞大的课程(上帝课程)绝对不聪明。但到目前为止,我认为 OP 还没有达到令人担忧的程度。我会赞成你的评论让 OP 看看:) @ChrisBaker 如果你不介意我想看看你自己的答案。你似乎很了解,我一直在寻找更多的信息。我对 SOLID 并不了解(非常了解)。同时我会看看它(也许我一直在应用它而不知道它被称为......或者可能不是;))。干杯 我认为这个问题中没有足够的关于项目结构的信息来提供关于他应该使用哪种模式的有用建议。我同意这些概念目前超出了 OP 的知识范围,但如果他准备好开始编写 OOP 代码,那么现在是时候在他养成坏习惯之前开始学习最佳实践了。从一些关于 OOP 的文章开始,比如这篇文章:nikic.github.io/2011/12/27/Dont-be-STUPID-GRASP-SOLID.html——不要对这个名字生气,没有人侮辱任何人——所有的缩写:) @ChrisBaker 谢谢,我会将它添加到我的答案中以供(未来)读者使用。【参考方案2】:

在面向对象编程中,类是定义 某种对象共有的状态和行为。一个类可以 根据其他类定义。例如,卡车和赛车 汽车都是汽车的例子。另一个例子是一个字母和一个 digit 既是可以在屏幕上绘制的单个字符。 在后一个示例中,使用了以下术语:

字母类是字符类的子类; (选择 名称:子类和派生类)字符类是直接的 字母类的超类(或父类);字母类 扩展字符类。第三个公式表示 子类继承状态(实例变量)和行为(方法) 来自它的超类。字母和数字共享状态(姓名、 字体,大小,位置)和行为(绘制,调整大小,...)定义为 单个字符。

来源: https://staff.fnwi.uva.nl/a.j.p.heck/Courses/JAVAcourse/ch3/s1.html

【讨论】:

以上是关于PHP中的类名的主要内容,如果未能解决你的问题,请参考以下文章

类名 PHP 中的大写字母

php - 检查存储在字符串中的类名是不是正在实现接口

可以使用类方法中的类名属性(在一行代码中)实例化 PHP 实例吗?

PHP中的变量名,函数名,类名是区分大小写的吗

从 Blade 中的别名类获取完全限定的类名

使用变量类名 (PHP) 访问静态方法