首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在PHP OOP中使用公共变量是否有任何有效的用例?

在PHP面向对象编程(OOP)中,公共变量(public properties)是一种常见的属性类型,它们可以在类的内部和外部被访问。在某些情况下,使用公共变量可能是有效的。以下是一些有效的用例:

  1. 简单的数据模型:对于简单的数据模型,公共变量可以使代码更简洁。例如,如果你有一个表示用户的类,其中包含用户名、电子邮件和密码等公共属性,这些属性可以直接访问,而无需使用getter和setter方法。
代码语言:php
复制
class User {
    public $username;
    public $email;
    public $password;
}

$user = new User();
$user->username = "JohnDoe";
$user->email = "johndoe@example.com";
$user->password = "password123";
  1. 数据传输对象(DTO):在某些情况下,使用公共变量可以简化数据传输对象的实现。数据传输对象用于在应用程序的不同层之间传递数据,通常包含简单的数据结构,不需要复杂的逻辑。
代码语言:php
复制
class UserDTO {
    public $id;
    public $name;
    public $email;
}
  1. 配置对象:在某些情况下,使用公共变量可以简化配置对象的实现。配置对象用于存储应用程序的配置信息,通常包含简单的数据结构,不需要复杂的逻辑。
代码语言:php
复制
class AppConfig {
    public $databaseHost;
    public $databaseName;
    public $databaseUser;
    public $databasePassword;
}

虽然在某些情况下使用公共变量可能是有效的,但在大多数情况下,使用私有变量(private properties)和getter/setter方法更为安全和推荐。这是因为私有变量和getter/setter方法可以提供更好的封装和控制,有助于避免意外修改和保护敏感数据。

总之,在PHP OOP中使用公共变量是否有效取决于具体的用例和需求。在简单的数据模型、数据传输对象和配置对象等场景中,使用公共变量可能是有效的。但在大多数情况下,使用私有变量和getter/setter方法更为安全和推荐。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP12个魔术方法

PHP12个魔术方法 这个标题有点牵强因为php不只12种魔术方法, 但是这些将会引导你使用php魔术方法一个好的开始。它可能魔幻,但是并不需要魔杖。...一个类声明时它常常是第一件做事但是没得必要他也像其他任何方法任何地方都可以声明,构造器也能像其他方法样继承。...由于并没有构造方法,PHP 会参考父类方法定义 信息来使用它因此我们能覆盖父类方法,或者不,我们新类-很便利。 __destruct 你发现文件句柄也是构造器一部分吗?...__clone 我们看过一个使用clone关键字例子,介绍从入门到oop第二部分,创建对象副本,而不是两个变量指向同一个实际数据。...一个类重写此方法,我们可以观察发生了什么当在对象上使用clone关键字时,。虽然这是不是我们每一天能遇到,一个漂亮是创建一个真正模式通过添加private访问修饰符给这个方法。

89540

接口与抽象类区别

3、接口只能做方法申明,抽象类可以做方法申明,也可以做方法实现 4、接口里定义变量只能是公共静态常量,抽象类变量是普通变量。...但是接口抽象级别最高 2.抽象类可以具体方法 和属性, 接口只能有抽象方法和不可变常量 3.抽象类主要用来抽象类别,接口主要用来抽象功能. 4、抽象类,且不包含任何实现,派生类必须覆盖它们。...接口使用 接口:interface PHP,我们可以规定,一个对象应该具有哪些公共外部操作,即可使用interface来规定。 公共方法就是接口。...php对象接口支持,可以定义类常量,接口之间也可以继承 抽象方法和抽象类 OOP 语言中,一个类可以一个或多个子类,而每个类都有至少一个公有方法做为 外部代码访问其接口。...; 2、拥有一个保存类实例静态成员变量 3、拥有一个访问这个实例公共静态方法(常用getInstance()方法进行实例化单类,通过instanceof操作符可以检测到类是否已经被实例化

46620

鸡肋PHP模式

> 优点:单模式可以避免大量new操作,因为每一次new操作都会消耗内存资源和系统资源 缺点:PHP,所有的变量无论是全局变量还是类静态成员,都是 页面级,每次页面被执行时,都会重新建立新对象...的确,global可以解决问题,也起到了单模式作用,但是OOP,我们拒绝这样来编写代码,因为global存在安全隐患,请参考相关书籍,同时单模式恰恰是对全局变量一种改进,避免了那些存储唯一实例全局变量污染命名空间...global $db; //OOP,我们不提倡这样编写代码 ...... }     使用模式编码 <?...也就是说,PHP语言级别上没有办法让某个对象常驻内存,这和asp.net、Java等编译型是不同,比如在Java单例会一直存在于整个应用程序生命周期里,变量是跨页面级,真正可以做到这个实例应用程序生命周期中唯一性...然而在PHP,所有的变量无论是全局变量还是类静态成员,都是页面级,每次页面被执行时,都会重新建立新对象,都会在页面执行完毕后被清空,这样似乎PHP模式就没有什么意义了,所以PHP模式我觉得只是针对单次页面级请求时出现多个应用场景并需要共享同一对象资源时是非常有意义

83820

PHP抽象类和接口用法实例详解

抽象类可以具体方法,并且具体方法可以抽象类实例化,然而抽象方法不可以抽象类实例化。 接口 oop模式接口也是比不可少一部分,接口(interface)是抽像类变体。...接口中,所有方法都是抽像。多继承性可通过实现这样接口而获得。接口中所有方法都是抽像,没有一个程序体。接口只可以定义static final成员变量。...由于抽像类,它允许使用接口名作为引用变量类型。通常动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象是否实现了接口。...3、接口中不可以声明成员变量(包括类静态变量),但是可以声明类常量。抽象类可以声明各种类型成员变量,实现数据封装。 4、接口没有构造函数,抽象类可以构造函数。...如果知道所有类都会共享一个公共行为实现,就使用抽象类,并在其中实现该行为。

72030

PHPGC垃圾收集机制

每一种语言都有自己自动垃圾回收机制,让程序员不必过分关心程序内存分配,但是OOP,有些对象需要显式销毁;防止程序执行内存溢出。...一、PHP 垃圾回收机制(Garbage Collector 简称GC) PHP,没有任何变量指向这个对象时,这个对象就成为垃圾。...PHP会将其在内存销毁;这是PHP GC垃圾处理机制,防止内存溢出。 当一个 PHP线程结束时,当前占用所有内存空间都会被销毁,当前程序中所有对象同时被销毁。...三、 Session 与 GC 由于PHP工作机制,它并没有一个daemon线程来定期扫描Session 信息并判断其是否失效,当一个有效请求发生时,PHP 会根据全局变量 session.gc_probability...和session.gc_divisor值,来决定是否启用一个GC, 默认情况下, session.gc_probability=1, session.gc_divisor =100 也就是说

92260

玩转PHP抽象类与接口

玩转PHP抽象类与接口 面向对象开发,特别是使用现代化框架过程,我们经常会和接口、抽象类打交道。...所以,抽象类一般是作为我们基类来进行定义一个类,只要有一个方法被定义为抽象,那么这个类就必须加上abstract关键字成为抽象类。...类可以实现多个接口,逗号来分隔多个接口名称。 类要实现接口,必须使用和接口中所定义方法完全一致方式。否则会导致致命错误 接口也可以继承,通过使用 extends 操作符 接口中也可以定义常量。...抽象类可以非抽象已经实现方法;接口中全是抽象方法,都是方法定义 抽象类中方法和变量访问控制自己定义;接口中只能是公共 那么问题来了,这两货哪个好?...抽象类作为公共基类来说可以为多态提供比较好范本,它能够让你子类自己个性又能使用父类能力。

1.2K10

Go 语言面向对象教程 —— 接口篇:接口和类型查询及转化

PHP 接口/类型查询 PHP 语言中,我们可以通过类型运算符 instanceof 判断某个变量是否属于指定类或接口实例: <?...以上篇教程介绍 Number 类、Number1 和 Number2 接口为 Go 语言中,要查询接口 Number2 指向对象实例 num2 是否属于接口 Number1,可以这么做: var...Go 语言类型查询实现语法和接口查询一样,我们以前面类继承教程定义 Animal、Dog 类为,它们都位于 oop,由于接口/类型查询语法左侧变量类型必须是接口类型,所以我们需要在 oop...需要注意是, Go 语言类型查询时,归属于子类实例并不归属于父类,因为类与类之间「继承」是通过组合实现,并不是 PHP/Java 语言中那种父子继承关系,比如上述代码我们把 ianimal...类型查询并不经常使用,它更多是个补充,需要配合接口查询使用,此外,还可以利用反射进行类型查询,正如我们变长参数教程中演示那样: func myPrintf(args ...interface{})

1K40

PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析

分享给大家供大家参考,具体如下: 1.对象克隆 clone PHP4面向对象功能一个很大缺点,是将对象视为另一种数据类型,这使得很多常见OOP方法无法使用,如设计模式。...__clone()方法不需要任何参数。将上例代码改写一下,添加魔术方法__clone(),为副本对象成员属性重新初始化。 <?...运行结果: 我名字:张三三,性别:男,年龄:23 我名字:李四四,性别:男,年龄:10 3.单加强:禁止克隆 对于一个类对象,如果使用“clone运算符”,就会复制出一个和当前对象完全一样新对象出来...则要实现单类,就应该对这个单对象“禁止克隆”。PHP,为防止对单类对象克隆来打破单上述实现形式,通常还为其提供一个空私有 (private修饰)__clone()方法。...function getInstance() { //公共静态方法,public——外部接口,static——不使用对象而是通过类名访问 if (!

38010

OOP 深入解释

面向对象编程 (OOP) 是一种基本编程范式,几乎每个开发人员都在其职业生涯某个阶段使用过。OOP 是用于软件开发最流行编程范例,并且大多数程序员教育生涯中被作为标准编码方式教授。...这个函数只对 type 对象帮助Car,所以我们Car类声明它,从而使它成为一个方法。 类模板用作创建单个对象蓝图。...OOP 程序 让我们以一个现实世界问题为,从概念上设计一个 OOP 软件程序。...公共/外部接口: 可从类外部访问方法和属性。 我们汽车来比喻封装。汽车与外界共享信息,使用信号灯指示转弯,是公共接口。相比之下,发动机隐藏在引擎盖下。 这是一个私有的内部接口。...,大多数编程语言都有公共、受保护和私有部分。公共部分是从外部世界或程序其他类访问方法有限选择。Protected 只能被子类访问。 私有代码只能从该类访问。

55910

PHP访问控制一些Tips

PHP访问控制一些Tips 包括PHP在内大部分面向对象编程语言,都提供了对类变量或方法访问控制。这是实现面向对象封装能力基础。...而有些变量和方法自己子类需要使用,但又不能暴露给外部,那么我们就会使用protected,也就是受保护。最后就是公开不管类内部、外部还是继承子类都可以使用public公共变量或方法了。...这里就出现了封装概念了,比如在setPrivate()我们就可以对传递过来$p变量进行逻辑判断而决定是否将值赋给$private。...也就是说,定义了同名$private私有变量并不是对父类变量覆盖,而是本类作用域内新建了一个。...不过越是简单东西越是基础,面向对象脱离不了这三个简单访问修饰符,它们现代软件开发份量十足,只有牢牢掌握它们才是我们正确学习之道。

89220

构造函数以及析构函数PHP需要注意地方

构造函数以及析构函数PHP需要注意地方 基本上所有的编程语言类中都会有构造函数和析构函数概念。...,则默认调用父类 析构函数如果没显式地将变量置为NULL或者使用unset()的话,会在脚本执行完成后进行调用,调用顺序测试代码是类似于栈形式先进后出(C->B->A,C先被析构),但在服务器环境则不一定...也就是说如果我一个F类,那么function F(){}方法就是它构造函数。为了向低版本兼容,PHP依然保留了这个特性,PHP7以后如果有与类名同名方法,就会报过时警告,但不会影响程序执行。...如果将构造函数设置成非公共,那么你将无法实例化这个类。这一点模式被广泛应用,下面我们直接通过一个单模式代码看来。...关于单模式为什么要让外部无法实例化问题,我们可以看看之前设计模式系统文章模式。

1.6K20

详解PHP PDO简单教程

PHP 5.5 版本之前,我们有用于访问 MySQL 数据库 mysql_ 命令,但由于安全性不足,它们最终被弃。...弃这件事是发生在 2013 年 PHP 5.5 上,我写这篇文章时间是 2018 年,PHP 版本为 7.2。mysql_ 带来了访问数据库两种主要方法:mysqli 和 PDO 库。...预处理语句 预处理语句是人们开始使用 PDO 主要原因之一,因为它提供了可以阻止 SQL 注入语句。 两种基本方法可供使用,你可以使用位置参数或命名参数。...由于没有位置绑定,因此多次使用相同变量查询中非常有效。...你需要做就是创建一个 options 数组,你可以在其中放入所有默认配置,只需 conn 变量传递数组即可。

3.2K20

36个助你成为专家需要掌握JavaScript概念

根据Wissam说法,作用域简单定义是,当编译器需要变量和函数时,它就是查找这个变量和函数地方。 理解作用域将允许你更有效使用JavaScript。...这些与前面的消息队列和事件处理程序概念有些关联。因此,通过理解时间间隔方法,我们可以理解它们是如何工作,并在我们有效使用它们。...在这种情况下,目标对象原型不包含源对 象属性。 这是这两种方法主要区别。 通过理解这三种创建对象方法,你可以根据应用程序适当地使用它们来创建内存效率高程序。...这个算法就是你以后要写程序。 尽管有成千上万个算法,其中两个是相当常见: 搜索 排序 这两个对程序员来说是非常常见,你至少应该全面了解可供他们使用已知算法。...这将帮助你和你团队应用程序开发期间顺利地协同工作。 35、解构 ES6引入了解构操作符。它有相当多,你肯定应该熟悉。对于相同,它们比以前实现更简单、更有效

70020

对于新程序员来说,Python与PHP相比如何?

Python 是数据科学家中流行编程语言,用于数据清理、可视化和创建机器学习模型。欺诈检测就是一个很好例证:对历史数据进行分析、处理和细分,以找到可用于避免未来欺诈行为关联和模式。...为了演示这一点,请考虑 Python 和 PHP 带有构造函数类声明之间区别。类是面向对象编程 (OOP基本组件。...它是必需,可帮助您创建正确缩进代码。 .PHP PHP ,您可以通过编写以下代码来声明一个类 - <?...PHP 另一个非常棒优点是运行 PHP 应用程序非常简单!您可以本地环境中使用AWESOME XAMPP执行此操作。...如果你想在线运行它,你所要做就是将你PHP文件上传到像BLUEHOST这样PHP主机,而无需安装任何东西。 职业选择相当有限;他们大多数都在Web开发

69860

PHP 预定义变量、魔术常量和魔术方法功能与用法小结

下面分别详细介绍一下 PHP 预定义变量、魔术常量和魔术方法 预定义变量 超全局变量: 超全局变量全部作用域中始终可用内置变量,意味这你可以 PHP 脚本任意位置直接访问。...函数或方法无需执行global $variable;就可以访问它们。 超全局变量是从 PHP 4.1.0 开始才有的功能。...响应头 $argc,传递给脚本参数数目 $argv,传递给脚本参数数组 魔术常量 PHP 八个魔术常量,它们值随着它们代码位置改变而改变。...__,当前命名空间名称 魔术方法 Magic methods PHP 魔术方法,命名自定义类方法时不能使用这些方法名,因为 PHP 已经规定好了这些方法是特定功能,例如 __construct...() 方法会被自动调用,本特性只 PHP 5.3.0 及以上版本有效

1.7K10

PHP 面向对象篇:类与对象、访问控制

面向对象编程(即 Object Oriented Programming,简称 OOP)是一种计算机编程架构,和基于函数构建程序(也被称作函数式编程)不同,面向对象编程思想是程序包含各种独立而又相互调用对象...所以要创建对象,需要先定义对应类,我们以汽车为,编写一个自定义类 Car, php_learning/oop/class.php 编写这个类: ?...3、类方法 了属性之后,可以通过方法进行设置和获取,以 $brand 为 PhpStorm ,可以通过如下方式快速为其生成设置(Setters)和获取(Getters)方法: Car 类花括号...PHP_EOL; } 4、实例化对象 了这些基本类属性和方法后,就可以基于这个类创建具体对象并调用对象方法执行任务了,我们通常将基于类创建对象过程称之为实例化, PHP ,我们通过 new...this 变量,它指向是当前对象实例引用,可以用于类内部调用对象级别属性和方法(类级别用 self:: 访问,后面讲静态属性和方法时会介绍),除了构造函数之外,普通类方法也可以使用 this:

2.4K10

PHPthis,self,parent区别

PHP5经过重写后,对OOP支持额了很大飞跃,成为了具备了大部分面向对象语言特性语言,比PHP4了很多面向对象特性。...PHPthis,self,parent区别之二self篇 此篇我们就self用法进行讲解 首先我们要明确一点,self是指向类本身,也就是self是不指向任何已经实例化对象,一般self使用来指向类静态变量...假如我们使用类里面静态(一般关键字static)成员,我们也必须使用self来调用。还要注意使用self来调用静态变量必须使用:: (域运算符号),见实例。 <?...我们语句①定义了一个静态变量firstCount,那么语句②时候使用了self调用这个值,那么这时候我们调用就是类自己定义静态变量frestCount。...总结:this是指向对象实例一个指针,实例化时候来确定指向;self是对类本身一个引用,一般用来指向类静态变量;parent是对父类引用,一般使用parent来调用父类构造函数。

2.2K20

Python入门到放弃 | 超简单 跟我学(十)

这也意味着如果你一个不声明任何形式参数方法,却仍然一个入口参数 —— self 。 类 最简单类可能如下代码所示(保存为文件 oop_simplestclass.py )。...这是如何工作 现在我们具体看一下 self 是如何工作。注意到 say_hi 方法没有取得任何一个参数,却在方法定义时候仍然一个 self 参数。...这是没有问题,因为带点标记 self.name 表示一个叫做 “name” 域是这个类一部分,而另外一个 name 是一个局部变量。这里我们显式地指出使用哪个变量,因此没有任何冲突。...这意味着这些变量和这些类和对象有关上下文中有效。这就是为什么他们被称作 命名空间 。 两种类型 域 – 类变量和对象变量。这是通过他们是 属于 类还是 属于 对象这一点来区分。...区别在于我们是否需要知道我们是哪个类一部分。因此既然我们想要声明一个类变量,让我们使用 classmethod 吧。 我们使用一个 装饰器 来标记 how_many 方法,并将其作为一个类方法。

19310

3分钟短文|PHP 定义常量,我该用define还是const?这下不迷茫了

引言 我们今天说一下 PHP 编程,定义一个常量所使用两种方法。哪些区别,以及哪种是最佳实践? ? 问题 开发者说,我在学习编写 PHP,可是定义常量方法很是让人迷惑。...深层原因 对于 PHP5.3 及以上,定义一个常量两种方法,一个是 const 关键字,一个是使用 define 函数。...'BAR'); // 有效 } 一种常见应用是检查常量是否已经定义: if (!...const FOO = [1, 2, 3]; // PHP 5.6 及以上有效 define('FOO', [1, 2, 3]); // PHP 7.0 及以上有效 5 - const还可以类或接口内使用它来定义类常量或接口常量...加上框架强制 OOP 方式,使得我们自觉不自觉地形成 const 定义类常量习惯。而且对于 IDE 自动索引也极为友好,写代码顺溜不得了。

91010
领券