- 浏览: 9830 次
- 来自: ...
文章分类
最新评论
php 学习笔记
一、 DOM对XML操作
$dom = new DOMDocument("1.0");
// save and display tree
echo $dom->saveXML();
对想添加的每一元素或文本节点,通过元素名或文本内容调用DOM文档对象的createElement()或createTextNode()方法。这将创建对应于元素或文本节点的新对象。
通过调用节点的appendChild()方法,并把其传递给上一步中创建的对象,并在XML文档树中将元素或文本节点添加到父节点。
通过使用属性,你也可以添加适合的信息到元素。对于PHP DOM API,添加属性需要两步:首先用DOM文档对象的createAttribute()方法创建拥有此属性名字的节点,然后将文档节点添加到拥有属性值的属性节点。
虽然不经常使用CDATA模块和过程向导,但是通过调用DOM文档对象的createCDATASection()和createProcessingInstruction()方法, PHP API 也能很好地支持CDATA和过程向导,请见程序清单E。
一旦已经实现你的目标,就可以将结果保存在一个文件或存储于PHP的变量。通过调用带有文件名的save()方法可以将结果保存在文件中,而通过调用saveXML()方法可存储于PHP的变量。
二、 使用 htmlentities 函数对实体编码
三、 字符集转换:
$html = mb_convert_encoding('<title>测试test</title>', 'gb2312', 'utf-8');
header("Cache-Control: no-cache, must-revalidate");
header('Content-type: text/html;charset=utf-8');
四、 Zend 框架组件包括:
Zend_Controller
|
此模块为应用程序提供全面的控制。它将请求转化为特定的行为并确保其执行。
|
Zend_Db
|
此模块基于 PHP 数据对象 (PDO) 并提供一种通用方式来访问数据库。
|
Zend_Feed
|
此模块使使用 RSS 和 Atom 提要变得简单。
|
Zend_Filter
|
此模块提供字符串过滤函数,如 isEmail() 和 getAlpha()。
|
Zend_InputFilter
|
对于 Zend_Filter,此模块是用来操作数组的,如表单输入。
|
Zend_HttpClient
|
此模块使您能轻易地执行 HTTP 请求。
|
Zend_Json
|
此模块使您能够轻易地将 PHP 对象转换成 JavaScript 对象符号,反之亦然。
|
Zend_Log
|
此模块提供通用日志功能。
|
Zend_Mail
|
此模块使您能够发送文本文件和多部分 MIME 电子邮件。
|
Zend_Mime
|
此模块被 Zend_Mail 用来解码 MIME 消息。
|
Zend_Pdf
|
此模块用来创建新的 PDF 文档,及加载和编辑现有文档。
|
Zend_Search
|
此模块使您能在现有文本上执行复杂搜索。例如,您可以建立一个搜索引擎,该引擎可以基于相关性或其他因素返回结果。
|
Zend_Service_Amazon、Zend_Service_Flickr 以及 Zend_Service_Yahoo
|
这些模块提供对这些 Web 服务 API 的简单访问。
|
Zend_View
|
此模块处理 MVC 模式的 “视图” 部分。
|
Zend_XmlRpc
|
此模块使您能够轻易地创建 XML-RPC 客户机。(已为将来计划好服务器功能。)
|
五、 MVC 模式将应用程序的职责分为三层:
模型
这里的模型概念性地表示了应用程序中的实体,它类同于一个类或者是面向对象世界中的对象。在一些实现中,模型只包含实体的结构。而在另一些实现中,模型还包含了与对象相关的业务逻辑。在本例中,模型仅包含实体的结构。
视图
视图是指页面的外观。它不包含,或至少不应该包含任何业务逻辑。在本例中,视图是能放置信息的模板,本例中为 HTML。
控制器
控制器是处理业务逻辑的地方。它具有两方面的职责,控制对象及其可视化表现,后者是由通过操纵视图来实现的。
六、 print_r 打印对象包含的数据
七、 Zend 控制类
class IndexController extends Zend_Controller_Action
当没有相应的指定时会自动去调用IndexController.php文件中IndexController类中的indexAction动作。
八、 首页动作,可以分到相应的控制和动作
<?php
include("Zend/Loader.php");
Zend_Loader::loadClass("Zend_Controller_Front");
$controller = Zend_Controller_Front::getInstance()
->setParam('noViewRenderer', true)
->setParam('useDefaultControllerAlways',true)
->setControllerDirectory('G://www.mingwww.cn//controllers')
->throwExceptions(true)
->returnResponse(false);
$controller->dispatch();?>
九、 视图处理
$view = new Zend_View();
$view->setScriptPath('views');
$view->title = 'Chomp! The online feedreader';
$view->slogan = 'all the feeds you can eat';
echo $view->render('indexIndexView.php');
十、 没有相应动的处理
public function noRouteAction() 在Controles中的处理
{
$this->_redirect('/');
}
十一、 对URL的管理
这些部分采用这样的布局: http://hostname/controller/action/parameters。
如果我们要调用 http://localhost/user/ 这一 URL,Zend 框架会将请求发送至 UserController,但由于此 URL 并未指定任何行为,因而会使用 indexAction
十二、 建立会话,保存登录状态
session_start();
$_SESSION['RSS_SESSION'] = session_id();
$_SESSION['firstname'] = $rowsFound[0]['firstname'];
$_SESSION['username'] = $rowsFound[0]['username'];
if (isset($_SESSION['username'])) 判断对话是否存在。
十三、 当没有相应的动作,在相应的动作里加入__CALL处理没有相应的方法。
function __call($action, $arguments)
{
echo "Action = " . $action . "<br />";
echo "Arguments = " . $arguments;
}
十四、 连接到数据库
$params = array(
'host' => 'localhost',
'username' => 'chompuser',
'password' => 'chomppassword',
'dbname' => 'chomp'
);
$DB = Zend_Db::factory('pdoMysql', $params);
//获取数据集
$row = array(
'firstname' => $_POST['fName'],
'LastName' => $_POST['lName'],
'EmailAddress' => $_POST['email'],
'Username' => $_POST['user'],
'Password' => $_POST['pass']
);
//通过ZEND的操作语句可以直接生成
$table = 'users';
$rowsAffected = $DB->insert($table, $row);
//也可以直接通过SQL语句直接操作
$DB->query($sql);查询一个语句
十五、 生成查询语句
$select = $DB->select();
$select->from('users', '*');
$select->where('Username = ?', $_POST['username']);
$select->where('Password = ?', $_POST['password']);
$sql = $select->__toString();
echo $sql;
fetchAll() 函数检索所有满足 select 语句的记录并将其放入一个二维数组。其中第一维是行,第二维是列。因而表达式 $rowsFound[0]['username'] 引用了所找到的第一行的 username 列。
判断是否存在
$rowsFound = $DB->fetchAll($select);
if (isset($rowsFound[0]["username"]))
{
$this->_redirect('/');没有记录时导向别的地方
}
十六、 更新数据
$record = array (
'firstname' => $_POST['fName'],
'lastname' => $_POST['lName'],
'emailaddress' => $_POST['email'],
'username' => $_POST['user'],
'password' => $_POST['pass']
);
$row = $DB->quoteInto('Username =?', $_SESSION['username']);
$rowsAffected = $DB->update($table, $record, $row);
十七、 删除数据
$table = 'subscribedfeeds';
$where = "username='$username' and feedname='$feedTitle'";
$rowsAffected = $db->delete($table, $where);
十八、 建立注册库,之后引用
include 'Zend/Db.php';
$params = array(
'host' => 'localhost',
'username' => 'chompuser',
'password' => 'chomppassword',
'dbname' => 'chomp'
);
$DB = Zend_Db::factory('pdoMysql', $params);
Zend_Registry::set('view', $view);
$view=Zend_Registry::get('view');
之后在Action中可以引用
require_once 'Zend/Db.php';
$DB = Zend::registry('DB')
如何使用 Zend_InputFilter 模块完成以下任务:
十九、 Zend_Feed 和 Zend_Inputfilter 模块
自动将数据从 POST、GET 和 SESSION 数组传送到 Zend 对象
过滤传入的 GET 或 POST 数据
关于 RSS 提要
如何使用 Zend_Feed 模块阅读 RSS 提要中的数据。
如何或在数据库中保存、查看以及删除提要条目,以便随后访问。
二十、 对数据库表的要求
use chomp;
create table feeds (feedname varchar(256), link varchar(512));
create table subscribedfeeds (username varchar(20), feedname varchar(256));
create table savedentries(username varchar(20), feedname varchar(256),channelname varchar(256), link varchar(512));
insert into feeds values
('Fox Sports', 'http://feeds.feedburner.com/foxsports/rss/headlines'),
('Google News', 'http://news.google.com/?output=rss'),
('Yahoo News', 'http://rss.news.yahoo.com/rss/topstories');
insert into subscribedfeeds values ('tsa', 'Google News');
数据库中的表的设置
feeds
|
此表用于存储可用提要。它包含两个字段:feedname 和 link。
|
subscribedfeeds
|
此表用于保存用户订阅的所有提要。订阅一条提要即为此表添加了一行,该行包含用户及订阅的这个提要的名称。它包含两个字段:username 和 feedname。
|
savedentries
|
此表用于存储用户已保存的全部 RSS 提要条目。以便使用户能在以后再次访问。它包含四个字段:username、feedname、channelname(文章标题)和 link。
|
二十一、 自动装载类
<?php
session_start();
include 'Zend.php';
function __autoload($class)
{
Zend::loadClass($class);
}
$view = new Zend_View;//注册视图
$view->setScriptPath('views');
Zend::register('view', $view);
二十二、 InputFilter 类
getAlpha
|
只返回字母字符
|
getAlnum
|
只返回字母/数字字符
|
getDigits
|
只返回数字
|
getRaw
|
返回原始数据(未经过过滤及测试)
|
testAlnum
|
如只包含字母字符及数字,返回其值,否则返回 FALSE
|
testAlpha
|
如只包含字母字符,返回其值,否则返回 FALSE
|
testCcnum
|
若是有效信用卡号码,返回其值,否则返回 FALSE
|
testDate
|
若是有效日期,返回其值,否则返回 FALSE
|
testEmail
|
若是有效的电子邮件地址(目前还未在 Zend 框架下实现),返回其值,否则返回 FALSE
|
testName
|
若是有效的人名,返回其值,否则返回 FALSE
|
testRegex
|
若同正则表达式相匹配,返回其值(我们会用此方法测试有效的电子邮件地址),否则返回 FALSE
|
testPhone
|
若是有效的电话号码,返回其值,否则返回 FALSE
|
testUri
|
若是有效的 URL,返回其值,否则返回 FALSE
|
testZip
|
若是有效的邮政编码,返回其值,否则返回 FALSE
|
noTags
|
返回过滤掉所有 HTML 标记的值
|
对GET,POST,SESSION的验证
$filterGet = new Zend_InputFilter($_GET);
$filterPost = new Zend_InputFilter($_POST);
$filterSession = new Zend_InputFilter($_SESSION);
Zend::register('fGet', $filterGet);
Zend::register('fPost', $filterPost);
Zend::register('fSession', $filterSession);
二十三、 InputFilter处理
$username = $filterPost->testAlnum('username');
$password = $filterPost->getRaw('password');
$password2 = $filterPost->getRaw('password2');
$email = $filterPost->testRegex('email', "^[a-z0-9]+[a-z0-9_-]*(/.[a-z0-9_-]+)*@[a-z0-9_-]+(/.[a-z0-9_-]+)*/.(
[a-z]+){2,}$^");
$lName = $filterPost->testName('lName');
$fName = $filterPost->testName('fName');
如果数据不正常,返回假或空字串
二十四、 Zend_HTTP_Client
二十五、 Zend_PDF
<?php
require_once 'Zend/Pdf.php';
$pdf = new Zend_Pdf();
$page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
$pageHeight = $page->getHeight();
$pageWidth = $page->getWidth();
echo 'Height = '.$pageHeight.'/n';
echo 'Width = '.$pageWidth.'/n';
$pdf->pages[0] = ($page);
$pdf->save("chomp.pdf");
?>
Zend_Pdf_Page::SIZE_A4,Zend_Pdf_Page::SIZE_A4_LANDSCAPE,Zend_Pdf_Page::SIZE_LETTER,Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE。请注意,在单个文档中,可以有不同尺寸的页面。
$chompImage = new Zend_Pdf_Image_JPEG(dirname(__FILE__) . '/chomp.jpg'); 调入一个JPG文件
$page->drawImage($chompImage, $leftPos, $bottomPos, $rightPos, $topPos); 向PDF写入图形
$style->setLineColor(new Zend_Pdf_Color_RGB(0.9, 0, 0));
$style->setFillColor(new Zend_Pdf_Color_GrayScale(0.2));
$style->setLineWidth(3);
$style->setFont(new Zend_Pdf_Font_Standard(Zend_Pdf_Const::FONT_HELVETICA_BOLD), 32); $page->setStyle($style);
$page->drawText('Chomp! To go', $rightPos + 32, $topPos - 48);
$page->drawRectangle(18, $pageHeight - 18, $pageWidth - 18, 18, Zend_Pdf_Const::SHAPEDRAW_STROKE);
首先要创建样式对象并为其设置属性。线条的颜色在这里设置为 RGB 值(在 0 至 1 的范围上设置的红色、绿色和蓝色),这主要应用于图形,一会便可看到。填充色这里设置为深灰色,这也可以应用在图形中,但在本例中更重要的是设置文本的颜色。行宽属性决定了您的文本行的宽度。
Zend_Pdf_Page::SHAPEDRAW_FILLNSTROKE、Zend_Pdf_Page::SHAPEDRAW_STROKE 和Zend_Pdf_Page::SHAPEDRAW_FILL。第一种选择包含了线和一种填充,所以如果我们在这里使用它,将会得到一个带红边的深灰色矩形。
输出到游览器
header('Content-type: application/pdf');
echo $pdf->render();
二十六、 EMAIL处理
电子邮件的结构是由消息头和消息体组成的。消息头包括关于消息的信息,诸如接收人、发送人、日期、消息 ID、发送人服务器 IP 地址、路由信息及多用途因特网邮件扩展(Multipurpose Internet Mail Extensions,MIME)类型。MIME 类型 将消息的类型确定为简单的文本消息、HTML 消息或带有附件的消息。消息体 仅仅是消息中的文本,可以扩充为很多行并可能带有附件。
Zend_Mail 组件包括:
Zend_Mail_Message
Zend_Mail_Abstract
Zend_Mail_Mbox
Zend_Mail_POP3
Zend_Mail_Transport_POP3
Zend_Mail_Maildir
Zend_Mail_Imap
Zend_Mail_Transport_Imap
require_once 'Zend/Mail/Transport/Smtp.php';
$tr = new Zend_Mail_Transport_Smtp('mail.example.com');
Zend_Mail::setDefaultTransport($tr);
$email = $row['emailaddress'];
$fName = $row['firstname'];
$lName = $row['lastname'];
$feedName = $row['feedname'];
$mail = new Zend_Mail ();
$mail->setFrom ('alerts@chomp.backstopmedia.com', 'Chomp! Alerts');
$mail->addTo ($email, "$fName $lName");
$mail->setSubject ('Your feeds have been updated');
$mail->setBodyText ("One of your subscribed feeds, $feedName, ". "has been updated.");
$mail->send ();
二十七、 Smary模板技术
基本使用方法
require_once(SMARTY_DIR . 'Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = '/web/www.example.com/smarty/guestbook/templates/';
$smarty->compile_dir = '/web/www.example.com/smarty/guestbook/templates_c/';
$smarty->config_dir = '/web/www.example.com/smarty/guestbook/configs/';
$smarty->cache_dir = '/web/www.example.com/smarty/guestbook/cache/';
$smarty->assign('name','Ned');
$smarty->display('index.tpl');
变量的显示方法
{* I am a Smarty comment, I don't exist in the compiled output*} 注释
$foo} <-- displaying a simple variable (non array/object)
{$foo[4]} <-- display the 5th element of a zero-indexed array
{$foo.bar} <-- display the "bar" key value of an array, similar to PHP $foo['bar']
{$foo.$bar} <-- display variable key value of an array, similar to PHP $foo[$bar]
{$foo->bar} <-- display the object property "bar"
{$foo->bar()} <-- display the return value of object method "bar"
{#foo#} <-- display the config file variable "foo"
{$smarty.config.foo} <-- synonym for {#foo#}
{$foo[bar]} <-- syntax only valid in a section loop, see {section}
{assign var=foo value='baa'}{$foo} <--displays "baa", see {assign}
{* display the server variable "SERVER_NAME" ($_SERVER['SERVER_NAME'])*}
{$smarty.server.SERVER_NAME}
{include file='header.tpl'} 功能函数
$smarty->left_delimiter = '<!--{'; 改变变量的引用方式
$smarty->right_delimiter = '}-->';
相关推荐
### PHP学习笔记与实例解析 #### 第一章:PHP高级语法与功能 ##### PHP的`date()`函数 `date()`函数是PHP中用于格式化日期和时间的强大工具。它可以将Unix时间戳转换成人类可读的日期和时间格式。这个函数有两个...
【PHP学习笔记】 在深入PHP之前,我们先回顾一下HTML的一些基础知识点。`<hr>`标签用于在HTML页面中创建一条水平线,起到分隔内容的作用。`target="_blank"`属性用于链接,当点击链接时会在新窗口打开目标页面。在...
【标题】:“当年我学PHP时整理的学习笔记” 这篇学习笔记是作者在学习PHP编程语言的过程中逐步积累并整理的,涵盖了初学者从基础到进阶的一些关键知识点。PHP是一种广泛应用于网页开发的服务器端脚本语言,尤其在...
PHP个人学习笔记
### PHP学习笔记总结 #### 一、Trim() 函数 - **功能**:Trim() 函数用于删除字符串开头和结尾的空白字符(如空格、制表符等)。这是一个非常实用的功能,在处理用户输入的数据时尤其有用,可以避免因为用户无意中...
标题:PHP学习笔记1 描述:本篇笔记旨在为初学者提供一个系统的学习路径,深入理解PHP编程语言的核心概念与实践技巧。通过本篇笔记,读者将能够掌握PHP的基础语法、变量、数据类型、控制结构、函数、面向对象编程、...
【PHP学习笔记】是作者四个月学习PHP过程中积累的个人笔记,主要涵盖了HTML基础、CSS基础以及PHP基础等核心内容。这些笔记对于初学者来说是非常有价值的资源,因为它们以小案例的形式展示了各种知识点,便于理解和...
php的学习笔记,环境配置、开发基础、问题解决
这份"php学习笔记之重要知识点总结"涵盖了PHP与MySQL的基础,旨在为学习者提供一个全面的指南。下面,我们将深入探讨这些核心概念。 首先,让我们从PHP的基础开始。PHP是一种服务器端的脚本语言,主要用于Web开发,...
【PHP学习笔记】 PHP(Hypertext Preprocessor,即“超文本预处理器”)是一种广泛应用于Web开发的开源脚本语言。它嵌入在HTML中,使得开发者可以在HTML页面中直接编写服务器端代码,实现动态网页功能。PHP的学习是...
《PHP学习笔记》 在IT领域,PHP是一种广泛使用的服务器端脚本语言,尤其适合Web开发。这篇笔记主要探讨了PHP的基本语法特性,包括它的无类型特性、continue语句的独特用法以及数组的处理。 首先,PHP是无类型的,...
【PHP学习笔记总结】 PHP(超文本预处理器)是一种广泛使用的开源脚本语言,特别适合于Web开发。它能够嵌入HTML中,让开发者在服务器端处理数据,生成动态网页内容。与JavaScript不同,PHP代码在服务器上执行,然后...
《PHP学习笔记实例代码详解》 PHP,全称“PHP:Hypertext Preprocessor”,是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发。它能够嵌入到HTML中,使得开发者可以灵活地处理动态网页内容。这篇学习笔记...