《高级Web后台开发》复习

一、单选题

1.如何声明一个PHP的用户自定义类?( B  )

A.<?php                                                                             B.<?php

class Class_name() { }                     class Class_name { }

?>                                     ?>

C.<?php                                                                             D.<?php

function Function_name { }                 function Function_name () { }

?>                                     ?>

2.下面哪一项不是PHP中面向对象的机制?( D  )

A.类               B.属性、方法        C.单一继承          D.多重继承

3.如何让一个对象实例调用自身的该对象的方法函数“mymethod”?( A  )

A.$self=>mymethod();                   B.$this->mymethod();

C.$current->mymethod();                    D.$this::mymethod();

4.下面哪项描述是错误的?(  A )

A.父类的构造函数与析构函数不会自动被调用

B.成员变量需要用public protected private修饰,在定义变量时不再需要var关键字

C.父类中定义的静态成员,不可以在子类中直接调用

D.包含抽象方法的类必须为抽象类,抽象类不能被实例化

5.如果成员没有声明限定字符,属性的默认值是( C  )。

A.private          B.protected            C.public           D.final

6.PHP中调用类文件中的$this表示(  A )。

A.用本类生成的对象变量                   B.本页面

C.本方法                                D.本变量

7.在PHP的面象对象中,类中定义的析构函数是在( C  )调用的。

A.类创建时          B.创建对象时        C.删除对象时        D.不自动调用

8.以下是一个类的声明,其中有两个成员属性,对成员属性正确的赋值方式是( B  )。

<?php

class Demo {

private $one;

static $two;

function setOne($value) {

$this->one=$value;

}

}

$demo=new Demo();

?>

A.$demo->one="abc";                     B.Demo::$two="abc";

C.Demo::setOne("abc");                 D.$demo->two="abc";

9.在PHP 5的类的定义中,无法使用3P修饰的内容是( D  )。

A.属性             B.静态方法          C.常量             D.方法

10.在PHP 5的类的定义中,如果方法M1能够调用方法M2,但M2不能调用M1,那么M1和M2应该符合(  A )。

A.M2是静态方法而M1不是             B.M1是静态方法而M2不是

C.M1和M2都是静态方法               D.M1和M2都不是静态方法

11.以下四条接口与抽象类的对比分析,哪条是错误的?( B  )

A.接口和抽象类都可以只声明方法而不实现它

B.抽象类可以定义类常量,而接口不能

C.抽象类可以实现具体的方法,而接口不能

D.抽象类可以声明属性,而接口不能

12.要实现PHP 5在面向对象编程方面最令人激动的自动加载功能,我们可以( A   )。

A.定义函数名为__autoload()的自动加载函数

B.通过php.ini或者ini_set()设置自动加载目录

C.在编译PHP 5时加上默认未激活的模块

D.使用spl_autoload_register()函数和相关函数来指定自动加载函数

13.针对PHP 5中特有的魔法方法(Magic Methods),下列四句中哪句是错误的?( A  )

A.__get和__set方法用于设置并不存在的类实例的属性成员

B.__call和__invoke方法用于调用并不存在的类的方法成员

C.__sleep和__wakeup方法用于在序列化类实例时处理其中的外部资源和冗余数据

D.通过__get方法,我们可以实现类的只读属性,而__set方法可以实现只写属性

14.如果你想要自动加载类,下面哪种函数声明是正确的?(   )

A.function autoload($class_name)           B.function __autoload($class_name, $file)

C.function __autoload($class_name)         D.function _autoload($class_name)

E.function autoload($class_name, $file)

15.以下哪段代码能正常执行?( D  )

A.abstract class boo{                                   B.abstract class boo{

abstract function func();                  function func();

}                                       }

class coo extends boo{                      class coo extends boo{

abstract function func(){}                 function func(){}

}                                       }

$coo = new coo();                           $coo = new coo();

C.class boo{                                 D.abstract class boo{

abstract function func();                        abstract function func();

}                                       }

class coo extends boo{                      class coo extends boo{

function func(){}                            function func(){}

}                                       }

$coo = new coo();                           $coo = new coo();

16.下面哪些说法是错误的?(   )

A.如果一个类的成员前面有访问修饰符private,那么这些成员不能被继承,并且在类的外部可见。但如果类的成员被指定为protect或public,则可以被继承,在类的外部也是可见的

B.PHP 5中,final关键字可以禁止继承和重载

C.PHP 5中,析构函数的名称是__destruct(),并且不能有任何参数

D.继承接口的类必须实现接口中声明的所有方法,在PHP中,如果继承接口的类没有实现接口中指定的方法,将会产生一个致命的错误

17.执行以下代码,输出结果是(  B )。

<?php

abstract class a{

function __construct(){

echo “a”;

}

}

$a=new a();

?>

A.a                B.一个错误警告      C.一个致命性的报错  D.无输出

18.执行以下代码,输入结果是( D  )。

<?php

class a{

function __construct(){

echo “echo class a something”;

}

}

class b extends a{

function __construct(){

echo “echo class b something”;

}

}

$a=new b();

?>

A.echo class a something echo class b something

B.echo class b something echo class a something

C.echo class as something

D.echo class b something

19.哪种OOP设置模式能让类在整个脚本里只实例化一次?( D  )

A.MVC          B.代理模式          C.抽象工厂模式          D.单件模式

20.借助继承,我们可以创建其他类的派生类。那么在PHP中,子类最多可以继承几个父类?( A  )

A.1个              B.2个              C.取决于系统资源    D.想要几个有几个

二、简答题

1.如何访问和设置一个类的属性?

<?php

class A{

public $name = “A”;

}

$a = new A();

n=a->name;

print_r($n);

2.PHP中有哪些常用的魔术方法?说明其用法。

3.简述public,protected,private,static,const和final的区别和调用方式。

1.public(公共的)

表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用

2.protected(受保护的)

是受访问权限显示的,不同包中的非子类是不能访问的 default 是受访问权限显示的,不同包中的子类不能访问

3.private(私有的)

必须要同一类才能访问 static 一个类的成员被声明为static时,他属于一个类,可以通过类名被访问,不需创建实例用

4.static(静态)

static属性定义的方法为类方法,可以通过类名来调用,不需创建实例 final 用final修饰的变量为常值变量,一旦初始化,不能更改通常final与static一起使用指定一个类常量用final修饰的方法为最终方法,不能再被子类重载

5.final

使用对象:类、方法、字段、变量

介绍:被定义成final的类不允许出现子类,不能被覆盖(不应用于动态查询),字段值不允许被修改。

6.const

用于类成员变量的定义,一经定义,不可修改. const只能接受静态的标量

4.面向对象中接口和抽象类的区别及应用场景?

1.有抽象方法的类叫做抽象类,抽象类中不一定有抽象方法,抽象方法必须使用abstract关键字定义。

2.接口中全部是抽象方法,方法不用使用abstract定义。

3.当多个同类的类要设计一个上层,通常设计为抽象类,当多个异构的类要设计一个上层,通常设计为接口。

5.serialize() /unserialize()函数的作用是什么?

1.serialize()

这个函数作用就是序列化数据,返回一个可存储的字符串,该函数有利于存储或传递PHP的值,同时不丢失其类型和结构

2. unserialize()

这个函数作用就是反序列化数据----从已存储的表示中创建 PHP 的值

6. 什么是面向对象?主要特征是什么?

1.什么是面向对象

面向对象编程,也就是我们常说的OOP,其实是面向对象的一部分。面向对象一共有3个部分:面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP)。我们现在将要学习的就是面向对象的编程,而面向对象编程中两个首要了解的也是很重要的概念就是类和对象。

2.主要特征

(1).封装性

简单形象的解释就是,把功能放在一个盒子里,要用到这个功能的时候,打开盒子,取出就可以使用。

(2).继承性

子类自动继承一个或多个父类中的属性与方法,并可以重写或者添加新的属性或方法。

这个特性简化了类和对象的创建,提高了代码的可重用性。

(3).多态性

指的是一个类可以创建多个对象,获取不同的结果。

7.类中如何定义常量?在类中、类外分别是如何调用常量的?

1.如何定义常量

有两种定义方式:

用define()函数来定义常量

define(‘STATUS‘, 3);    // 如果第三个参数设置为true,则大小写不敏感

echo STATUS;

用const关键字来定义常量

const NAME = 4;

echo NAME;

2. 在类中、类外分别是如何调用常量的?

<?php class Foo{

const con_var="常量值不能被改";

public function method_a(){

echo (self::con_var); // 内部调用

}

}

echo(Foo::con_var); //外部调用 注修饰符为

public $myFoo=new Foo();

echo ($myFoo->method_a());

?>

三、编程题

1. 请简单写一个类,实例化这个类,并写出调用该类的属性和方法的语句。

<?php

class NewClass {

public function hello(){

echo "hello world";

}

}

$newclass = new NewClass();

$newclass -> hello();

?>

2. 定义一个Person类,成员属性有:姓名、性别、年龄,成员方法有:构造方法、say()方法、run()方法、析构方法。再定义一个子类Student继承Person类,要求在子类的say()方法中完成父类方法的调用。

<?php

class Person {             //声明一个人类Person,其中包含三个成员属性和两个成员方法

//下面是声明人的成员属性

var $name;          //第一个成员属性$name定义人的名子

var $sex;            //第二个成员属性$sex定义人的性别

var $age;            //第三个成员属性$age定义人的年龄

//声明一个构造方法,将来创建对象时,为对象的成员属性赋予初值

function __construct($name, $sex, $age) {

$this->name = $name;   //在创建对象时,使用传入的参数$name为成员属性$this->name赋初值

$this->sex = $sex;      //在创建对象时,使用传入的参数$sex为成员属性$this->sex赋初值

$this->age = $age;      //在创建对象时,使用传入的参数$age为成员属性$this->age赋初值

}

//下面是声明人的成员方法

function say(){             //在类中声明说话的方法,使用$this访问自已对象内部的成员属性

return "我的姓名是:".$this->name.", 性别:".$this->sex.", 我的年龄是:".$this->age."。<br>";

}

function run() {            //在类中声明另一个方法

return $this->name."在走路<br>";    //使用$this访问本对象中的$name属性

}

function __destruct() {

return "再见".$this->name."<br>";

}

}

class Student extends Person{

function say1(){

return $this->say()."继承Person类";

}

}

// 下面三行通过new关键字实例化person类的三个实例对象

$person1=new Person("张三", "男", 20);

// echo $person1->run();

$student = new Student("John","male","20");

echo $student->say1();

?>

3.用面向对象来实现A类同时继承B类和C类。

<?php

interface testA{

function echostr();

}

interface testB extends testA{

function dancing($name);

}

class testC implements testB{

function echostr(){

echo "接口继承,要实现所有相关抽象方法!";

echo "<br>";

}

function dancing($name){

echo $name."正在跳舞!";

}

}

$demo=new testC();

$demo->echostr();

$demo->dancing("模特");

4.通过static关键字限制一个类最多只能创建出一个实例化对象(提示:单态设计模式)。

5. 定义一个汽车(Car)类和一个公交车(Bus)类,要求如下。

(1)汽车(Car)类内有两个私有属性:型号(model)、颜色(color) ,成员方法包含构造方法,__toString( )方法,还有__set( )  __get( )方法。其中,__toString( )方法负责输出“这是一辆汽车,型号为XXX,颜色为XXX。”

(2)公交车(Bus)类继承汽车(Car)类,内有一个私有属性:共载人数(number),并重写父类的构造方法和__toString( )方法。其中,__toString( )方法负责输出“这是一辆公交车,型号为XXX,颜色为XXX,载客人数为XX人。”

6. 编写一个PHP程序,保存为Rectangle.php要求如下:

(1)创建一个矩形(Rectangle)类,该类的成员属性有:宽(width)、高(height)、颜色(color)、周长(perimeter)、面积(area),属性均使用private关键字封装在类内部;成员方法有:构造方法,求周长方法calcPerimeter(),求面积方法calcArea(),say()方法。其中,构造方法实现在创建对象的时候对宽、高、颜色进行初始化,say()方法实现打印出矩形对象的所有成员信息。

(2) 用Rectangle类创建两个实例$rec1和$rec2,分别为宽4高3红色,宽10高5蓝色,并调用这两个对象的成员方法,计算并打印出矩形对象的宽、高、颜色、周长、面积。

7.使用面向对象中封装、继承、多态三大特性及接口的应用,实现在同一个电脑主板的PCI插槽中,安装声卡、网卡和显示卡等符合PCI规范的不同功能的PCI设备。当插入不同的PCI设备卡时,就开启被插入卡的功能(提示:声明一个PCI接口、声卡类、网卡类、显示卡类、主板类、安装工人类,其中每个PCI设备都要实现PCI接口的规范)。

8. 请用 PHP编写一个Mysql类,实现在每次对数据库连接的访问中都只能获得唯一的一个数据库连接,写出主要逻辑代码即可。(假设数据库连接信息为Host:locahost; 数据库用户名:root, 数据库密码:123)

文档下载:《高级Web后台开发》复习

原文地址:https://www.cnblogs.com/madling/p/9198576.html

时间: 2024-11-10 14:58:56

《高级Web后台开发》复习的相关文章

Asp.Net Web API开发微信后台

如果说用Asp.Net开发微信后台是非主流,那么Asp.Net Web API的微信后台绝对是不走寻常路. 需要说明的是,本人认为Asp.Net Web API在开发很多不同的请求方法的Restful服务的时候是利器,可在开发微信后台的时候,因为微信调用我们这个后台的时候来来去去就一个方法,所以Web API有点杀鸡用牛刀的感觉. 而且由于Web API其实是微软封装了大量的类库,所以会导致后台相当臃肿.所以,不建议Asp.Net Web API开发微信后台. 如果好奇心太强实在想试一下,可以参

Web前端开发(高级)下册-目录

多媒体与绘图 多媒体 音频格式 视频格式 HTML5多媒体支持 <audio>和<video> htmlaudioElement和htmlVideoElement <audio>和<video>的事件 html5的绘图支持 <canvas>元素 绘制图形 绘制几何图形 绘制路径 绘制字符串 清除绘制内容 绘制阴影 绘制位图 变形 svg HTML5中使用svg svg的基本语法 svg内部标签 几何图形标签 路径标签 文字标签 HTML5新特性

麦子学院-Web前端开发工程师系列培训教程

HTML+CSS基础入门1.课程介绍2.html的语法3.html的基本结构4.html的文档设置标记上(格式标记)5.html的文档设置标记下(文本标记)6.html图像标记img7.html超链接的使用8.html表格相关的标记9.html表格实战<简单的网页布局>10.html框架详解与框架布局实战11.HTML表单设计(上)12.HTML表单设计(下)13.使用CSS样式的方式14.定义CSS样式(CSS选择器)15.CSS常用属性(颜色属性)16.css常用属性(字体相关属性)17.

Web前端开发推荐阅读书籍、学习课程下载

转自http://www.xuanfengge.com/fe-books.html 前言 学校里没有前端的课程,那如何学习JavaScript,又如何使自己成为一个合格的前端工程师呢? 除了在项目中学习和跟着有经验的同事学习,读书也是必不可少的.书中有着相对完整的知识体系,每读一本好书都会带来一次全面的提高. 而如果深一脚浅一脚的学习,写出代码的质量会参差不齐.初学者的首要任务是成为靠谱的熟练开发者,能够稳定的输出有一定质量的代码. 前端技术发展速度特别快,总是涌现出很多新的东西,需要不断的学习

Web前端开发十日谈

一直想写这篇“十日谈”,聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是“初级”前端开发工程师,一方面我入道尚浅,只有短短几年,另一方面我自知对技术的钻研并不深入,可能是由于环境的原因,当然最重要的是,我幸运的参与到互联网崛起的浪潮之巅.时势造就了一批技能薄弱但备受追捧的“弄潮者”,这在很大程度上影响我们对“技术本质”的洞察力,多年来也一直未有成体系的“前端技术”布道佳作,以至于当下多数人对前端技术

我也想成为一名出色的web前端开发工程师

随着互联网的发展,正式的前端工程师角色被行业认可,到了2010年,互联网开始全面进入移动时代,前端工程师的地位越来越重要,前端领域的技术发展也越来越快,各种新的思想.设计模式.工具和平台都快速发展,对前端工程师的技能要求也越来越高. 何为前端工程师?前端工程师,也叫Web前端开发工程师.他是随着web发展,细分出来的行业.它要求前端开发工程师不仅要掌握基本的Web前端开发技术,网站性能优化.SEO和服务器端的基础知识,而且要学会运用各种工具进行辅助开发以及理论层面的知识,包括代码的可维护性.组件

Web前端开发的体会十日谈(转)

一直想写这篇“十日谈”,聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是“初级”前端开发工程师,一方面我入道尚浅,只有短短几年,另一方面我自知对技术的钻研并不深入,可能是由于环境的原因,当然最重要的是,我幸运的参与到互联网崛起的浪潮之巅.时势造就了一批技能薄弱但备受追捧的“弄潮者”,这在很大程度上影响我们对“技术本质”的洞察力,多年来也一直未有成体系的“前端技术”布道佳作,以至于当下多数人对前端技术

web前端开发与iOS终端开发的异同[转]

* {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-family: Arial, Helvetica, sans-serif;margin: 0;color: #333;word-wrap: break-word;}h1, h2, h3, h4, h5, h6 {line-height: 1.1;}img {max-width: 100% !importan

淘宝前端工程师:国内WEB前端开发十日谈

转自:http://www.jianshu.com/p/8cf2df3fdbf2 一直想写这篇“十日谈”,聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是“初级”前端开发工程师,一方面我入道尚浅,只有短短几年,另一方面我自知对技术的钻研并不深入,可能是由于环境的原因,当然最重要的是,我幸运的参与到互联网崛起的浪潮之巅.时势造就了一批技能薄弱但备受追捧的“弄潮者”,这在很大程度上影响我们对“技术本质”