`
zxwwjs
  • 浏览: 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学习笔记与实例解析 #### 第一章:PHP高级语法与功能 ##### PHP的`date()`函数 `date()`函数是PHP中用于格式化日期和时间的强大工具。它可以将Unix时间戳转换成人类可读的日期和时间格式。这个函数有两个...

    php学习笔记

    【PHP学习笔记】 在深入PHP之前,我们先回顾一下HTML的一些基础知识点。`&lt;hr&gt;`标签用于在HTML页面中创建一条水平线,起到分隔内容的作用。`target="_blank"`属性用于链接,当点击链接时会在新窗口打开目标页面。在...

    当年我学PHP时整理的学习笔记

    【标题】:“当年我学PHP时整理的学习笔记” 这篇学习笔记是作者在学习PHP编程语言的过程中逐步积累并整理的,涵盖了初学者从基础到进阶的一些关键知识点。PHP是一种广泛应用于网页开发的服务器端脚本语言,尤其在...

    PHP个人学习笔记

    PHP个人学习笔记

    php学习笔记总结

    ### PHP学习笔记总结 #### 一、Trim() 函数 - **功能**:Trim() 函数用于删除字符串开头和结尾的空白字符(如空格、制表符等)。这是一个非常实用的功能,在处理用户输入的数据时尤其有用,可以避免因为用户无意中...

    PHP学习笔记1

    标题:PHP学习笔记1 描述:本篇笔记旨在为初学者提供一个系统的学习路径,深入理解PHP编程语言的核心概念与实践技巧。通过本篇笔记,读者将能够掌握PHP的基础语法、变量、数据类型、控制结构、函数、面向对象编程、...

    PHP学习笔记.rar

    【PHP学习笔记】是作者四个月学习PHP过程中积累的个人笔记,主要涵盖了HTML基础、CSS基础以及PHP基础等核心内容。这些笔记对于初学者来说是非常有价值的资源,因为它们以小案例的形式展示了各种知识点,便于理解和...

    PHP学习笔记

    php的学习笔记,环境配置、开发基础、问题解决

    php学习笔记之重要知识点总结

    这份"php学习笔记之重要知识点总结"涵盖了PHP与MySQL的基础,旨在为学习者提供一个全面的指南。下面,我们将深入探讨这些核心概念。 首先,让我们从PHP的基础开始。PHP是一种服务器端的脚本语言,主要用于Web开发,...

    我的PHP学习笔记

    【PHP学习笔记】 PHP(Hypertext Preprocessor,即“超文本预处理器”)是一种广泛应用于Web开发的开源脚本语言。它嵌入在HTML中,使得开发者可以在HTML页面中直接编写服务器端代码,实现动态网页功能。PHP的学习是...

    Php学习笔记.docPhp学习笔记.docPhp学习笔记.doc

    《PHP学习笔记》 在IT领域,PHP是一种广泛使用的服务器端脚本语言,尤其适合Web开发。这篇笔记主要探讨了PHP的基本语法特性,包括它的无类型特性、continue语句的独特用法以及数组的处理。 首先,PHP是无类型的,...

    PHP学习笔记总结.doc

    【PHP学习笔记总结】 PHP(超文本预处理器)是一种广泛使用的开源脚本语言,特别适合于Web开发。它能够嵌入HTML中,让开发者在服务器端处理数据,生成动态网页内容。与JavaScript不同,PHP代码在服务器上执行,然后...

    php学习笔记实例代码

    《PHP学习笔记实例代码详解》 PHP,全称“PHP:Hypertext Preprocessor”,是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发。它能够嵌入到HTML中,使得开发者可以灵活地处理动态网页内容。这篇学习笔记...

Global site tag (gtag.js) - Google Analytics