php类和对象
1. php中面向对象的类中,属性都允许哪些数据类型
对属性或方法的访问控制,是通过在前面添加关键字 public、protected 或 private 来实现的。由 public 所定义的类成员可以在任何地方被访问;由 protected 所定义的类成员则可以被其所在类的子类和父类访问(当然,该成员所在的类也可以访问);而由 private 定义的类成员则只能被其所在类访问。
2. PHP 中的 对象 类 属性 实例化 到底是怎么理解的啊·
我的理解
说一个人养了一只小狗(定义一个对象),把狗牵过来,摆在面前,让它确实存在(实例化)。
类,就是类别。人是一类,狗是一类。
属性就是人的特点,长头发、白皮肤、黑眼珠。
方法就是人会唱歌、会说话、会跑步跳跃等各种行为。
对象,就是类里面的一个个体。人类中的每一个人都是一个对象
3. PHP语言的有哪些优势和特点
优势和特点:
1、执行速度快:PHP是一种强大的CGI脚本语言,语法混合了C、Java、Perl和PHP式的新语法,执行网页比CGI、Perl和ASP更快,这是它的第一个突出的特点。
2、具有很好的开放性和可扩展性:PHP属于自由软件,其源代码完全公开,任何程序员为PHP扩展附加功能非常容易。
3、数据库支持:PHP支持多种主流与非主流的数据库,如:、Adabas D、DBA、dBase、dbm、filePro、Informix、InterBase、mSQL、MySQL、Microsoft SQL Server、Solid、Sybase、ODBC、oracle、oracle 8、PostgreSQL等。其中,PHP与MySQL是现在绝佳的组合,它们的组合可以跨平台运行。
4、面向对象编程:PHP提供了类和对象。为了实现面向对象编程,PHP4及更高版本提供了新的功能和特性,包括对象重载、引用技术等。
5、版本更新速度快:与数年才更新一次的ASP相比,PHP的更新速度就要快得多,因为PHP每几周就更新一次。
6、具有丰富的功能:从对象式的设计、结构化的特性、数据库的处理、网络接口应用、安全编码机制等,PHP几乎涵盖了所有网站的一切功能。
7、可伸缩性:传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。
8、功能全面:php包括图形处理、编码与解码、压缩文件处理、xml解析、支持http的身份认证、cookie、 pop3 、snmp等。
(3)php类和对象扩展阅读:
PHP的发展现状:
PHP技术核心和相关的人才需求,正符合互联网的发展趋势。网站开发、API接口开发,服务器端开发,移动端后台开发,内部OA系统开发,游戏开发等均用到PHP语言。
在IT行业和互联网的飞速发展的时代,企业对PHP开发人员的需求也大幅增加,目前在国内专业的互联网招聘网站,好多知名公司发布招聘PHP岗位,其中包括网易、京东、联想、阿里巴巴、滴滴打车、美团、大众点评、易到用车、网络、新浪、搜狐、奇虎、腾讯等。
4. php 中如何得到一个对象的类型
得到一个对象的类型,使用gettype()函数:
<?php
echogettype(1);//输出integer
echogettype(array());//输出array
得到一个对象是哪个类的实例,使用get_class()函数:
<?php
$o=newstdClass();
echoget_class();//输出stdClass
得到一个类或对象的方法和属性,要使用反射:
<?php
classMyClass{
public$var;
publicfunctionfoo(){}
}
$ref=newReflectionClass('MyClass');
$ref->getProperties();//会返回一组对象,用法参考PHP手册
$ref->getMethods();//会返回一组对象,用法参考PHP手册
$obj=newMyClass();
$ref=newReflectionObject($obj);
$ref->getProperties();
$ref->getMethods();
5. PHP中对象的小问题
首先,大多数情况下,涉及到类和函数(方法)的时候才会用到this!
在一个类中,即在同一个class下,会存在多个变量和函数,例如/*
class test{
private $user;
function setuser($user){
$this->user = $user ;//请注意这句话
}
}*/
这个小例子中出现了两个user,如何来区分?对于function来说,使用传递过来的参数或者new出来的变量,直接写名字;使用function之外的变量,用$this->变量名;
对象使用的是$对象->变量名,而不是this,二楼说的不清楚
6. PHP是什么
PHP(PHP:Hypertext Preprocessor递归缩写)中文名字是:“超文本预处理器”,是一种广泛使用的通用开源脚本语言,适合于Web网站开发,它可以嵌入HTML中。编程范型是面向对象、命令式编程的,截止2019年4月24日为止,最新的版本是PHP 5.6.0(28 Aug 2014),其操作的系统为windows/linux/Mac跨平台。
(6)php类和对象扩展阅读:
PHP的功能
1、创建博客
使用PHP创建博客wordpres,可以轻松创建博客。即使您不具备PHP知识,也可以使用它,但如果您可以编写PHP,则可以自定义您的博客并创建主题。
2、网站开发
60%全球互联网网站采用php技术,80%国内互联网网站使用php开发。这些网站包含购物网站,政府企业网站,QQ空间,论坛博客等等。
3、移动端微网站开发以及小程序
移动设备的普及为移动互联网的快速发展奠定了基础!手机淘宝网站,手机京东网站等等, 微信公众号应用中的微网站。
7. 可以在一个php类文件中创建另一个php类文件的对象吗
1、不可以在一个类里面再创建一个类,但是可以require一个包含类的文件
2、一个php文件里面可以创建多个类
3、一个函数里面可以再创建另一个函数
<?php
functiona(){
functionb(){
echo123;
}
b();
}
a();
?>
不知道是不是你想要的答案
8. php创建一个类,在类中声明一个数组存放另一个对象,为什么无法调用数组中对象的方法
//新建一个类User用来存放这,三个数据
//结果放到一个User数组中,你看这可以吗?
//还是说要放到一个list中?
public class ObjectTest {
public static void main(String[] args) {
String[] id = new String[8];
String[] type = new String[8];
String[] username = new String[8];
User[] users = getUsers(type, id, username);
}
private static User[] getUsers(String[] type, String[] id, String[] username) {
User[] users = new User[type.length];
for (int i = 0; i < type.length; i++) {
users[i] = new User(id[i], type[i], username[i]);
}
return users;
}
}
class User {
public User(String id, String tpye, String username) {
this.tpye = tpye;
this.id = id;
this.username = username;
}
private String tpye;
private String id;
private String username;
public String getTpye() {
return this.tpye;
}
public String getId() {
return this.id;
}
public String getUsername() {
return this.username;
}
public void setTpye(String tpye) {
this.tpye = tpye;
}
public void setId(String id) {
this.id = id;
}
public void setUsername(String username) {
this.username = username;
}
}
9. php 运行机制
请看PHP手册18章,里面的内容你看了就明白。
第 18 章 类与对象(PHP 4)
目录
类
继承
构造函数
范围解析操作符(::)
parent
序列化对象 - 会话中的对象
魔术函数 __sleep 和 __wakeup
构造函数中的引用
对象的比较
类
类是变量与作用于这些变量的函数的集合。使用下面的语法定义一个类:
<?php
class Cart {
var $items; // 购物车中的物品
// 将 $num 个 $artnr 物品加入购物车
function add_item($artnr, $num) {
$this->items[$artnr] += $num;
}
// 将 $num 个 $artnr 物品从购物车中取出
function remove_item($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} elseif ($this->items[$artnr] == $num) {
unset($this->items[$artnr]);
return true;
} else {
return false;
}
}
}
?>
上面的例子定义了一个 Cart 类,这个类由购物车中的商品构成的数组和两个用于从购物车中添加和删除商品的函数组成。
警告
不能将一个类的定义分割到多个文件中。也不能将一个类的定义分割到多个 PHP 块中,除非该分割是在一个方法声明内部。以下用法将不起作用:
<?php
class test {
?>
<?php
function test() {
print 'OK';
}
}
?>
但是以下用法是可以的:
<?php
class test {
function test() {
?>
<?php
print 'OK';
}
}
?>
以下警告仅用于 PHP 4。
小心
名称 stdClass 已经被 Zend 使用并保留。不能在 PHP 代码中定义名为 stdClass 的类。
小心
函数名 __sleep 和 __wakeup 在 PHP 类中是魔术函数。除非想要与之联系的魔术功能,否则在任何类中都不能以此命名函数。
小心
PHP 将所有以 __ 开头的函数名保留为魔术函数。除非想要使用一些见于文档中的魔术功能,否则建议不要在 PHP 中将函数名以 __ 开头。
在 PHP 4 中,var 变量的值只能初始化为常量。用非常量值初始化变量,需要一个初始化函数,该函数在对象被创建时自动被调用。这样一个函数被称之为构造函数(见下面)。
<?php
/* PHP 4 中不能这样用 */
class Cart {
var $todays_date = date("Y-m-d");
var $name = $firstname;
var $owner = 'Fred ' . 'Jones';
/* 不过包含有常量的数组可以 */
var $items = array("VCR", "TV");
}
/* 应该这样进行 */
class Cart {
var $todays_date;
var $name;
var $owner;
var $items = array("VCR", "TV");
function Cart() {
$this->todays_date = date("Y-m-d");
$this->name = $GLOBALS['firstname'];
/* etc. . . */
}
}
?>
类也是一种类型,就是说,它们是实际变量的蓝图。必须用 new 运算符来创建相应类型的变量。
<?php
$cart = new Cart;
$cart->add_item("10", 1);
$another_cart = new Cart;
$another_cart->add_item("0815", 3);
?>
上述代码创建了两个 Cart 类的对象 $cart 和 $another_cart,对象 $cart 的方法 add_item() 被调用时,添加了 1 件 10 号商品。对于对象 $another_cart,3 件 0815 号商品被添加到购物车中。
$cart 和 $another_cart 都有方法 add_item(),remove_item() 和一个 items 变量。它们都是明显的函数和变量。可以把它们当作文件系统中的某些类似目录的东西来考虑。在文件系统中,可以拥有两个不同的 README.TXT 文件,只要不在相同的目录中。正如从为了根目录访问每个文件需要输入该文件的完整的路径名一样,必须指定需要调用的函数的完整名称:在 PHP 术语中,根目录将是全局名字空间,路径名符号将是 ->。因而,名称 $cart->items 和 $another_cart->items 命名了两个不同的变量。注意变量名为 $cart->items,不是 $cart->$items,那是因为在 PHP 中一个变量名只有一个单独的美元符号。
<?php
// 正确,只有一个 $
$cart->items = array("10" => 1);
// 不正确,因为 $cart->$items 变成了 $cart->""
$cart->$items = array("10" => 1);
// 正确,但可能不是想要的结果:
// $cart->$myvar 变成了 $cart->items
$myvar = 'items';
$cart->$myvar = array("10" => 1);
?>
在定义类的时候,无法得知将使什么名字的对象来访问:在编写 Cart 类时,并不知道之后对象的名称将会命名为 $cart 或者 $another_cart。因而你不能在类中使用 $cart->items。然而为了类定义的内部访问自身的函数和变量,可以使用伪变量 $this 来达到这个目的。$this 变量可以理解为“我自己的”或者“当前对象”。因而 '$this->items[$artnr] += $num' 可以理解为“我自己的物品数组的 $artnr 计数器加 $num”或者“在当前对象的物品数组的 $artnr 计数器加 $num”。
注意: 伪变量 $this 通常未定义,如果其所在的方法是被静态调用的话。但这不是个严格规定:如果一个方法被从另一个对象内静态调用的话,则 $this 会被定义。此时 $this 的值是那个发出调用的对象。用下例演示:
<?php
class A
{
function foo()
{
if (isset($this)) {
echo '$this is defined (';
echo get_class($this);
echo ")\n";
} else {
echo "\$this is not defined.\n";
}
}
}
class B
{
function bar()
{
A::foo();
}
}
$a = new A();
$a->foo();
A::foo();
$b = new B();
$b->bar();
B::bar();
?>
上例将输出:
$this is defined (a)
$this is not defined.
$this is defined (b)
$this is not defined.
注意: 有一些不错的函数用来处理类和对象。应该关注一下类/对象函数。
10. PHP真的能算是面向对象的语言吗
面向对象三大特性:封装,继承,多态
php可以封装对象,也可以继承,同样可以实现多态
多态是指指出重写和重载,php子类可以重写父类的方法,也可以通过方法的参数数量不同来重载方法,我觉得是面向对象语言