定界符
另一种给字符串定界的方法使用定界符语法(“<<<”)。应该在 <<< 之后提供一个标识符,然后是字符串,然后是同样的标识符结束字符串。
有时不得不从PHP中挑出来以打印大批的HTML代码, 但会破坏代码可读性, 此时可以使用定界符进行打印:
print <<
但要求首行必须顶格写, 且结束行';'后无内容. 可以有效降低对代码可读性的破坏.
H;
如果谈绿色, 谈低碳, 那我们公司做的, 那叫一个环保集约, 举例来说: 几乎所有的数据load, 都是lazy的(PartialObject). 譬如:
你要显示一个新闻列表, 那数据库发来得只有连接给标题, 没有内容啊 附件啊, 等你要打开显示详情了, 再去load. 出于这么一个环保节约的理念, 今天在研究Wordpress文档时惊讶的发现, 哇, wp也很环保呀, 试看:
Some post-related data is not available to get_posts by default, such as post content through the_content(), or the numeric ID. This is resolved by calling an internal function setup_postdata(), with the $post array as its argument.
我们天真的以为wp也很环保啊, 我英文也不球行, 以为是lazy的, 于是在只想做个新闻列表的时候不想load content. 但是来回翻了几遍代码, 发现没有处理PartialObject的地方!
我们老板比较熟悉PHP, 在qury.php中发现了猫腻, 加了个debug打印, 抓图奉上:
请看仔细: 是Select wp_posts.*, 也就是说, 虽然只想打印一个Recent Posts, 但从数据库load的时候, 你会load他的标题, 作者, 时间, 内容(MySql类型为: longtext) — 当然这只是从数据库load到服务器, 并不一定直接表现在网页上, 但在如果流量极大的情况下, 如此频繁并剧烈的Select, 相比会大大延缓速度.
如果wp一直这样load数据, 那必须得用cache了.
也就是说, 数据是一次load全部的, setup_postdata($post)只是设定值,而不是读取完整的对象,
对于get_posts()后, 取得post Attribute的方法:
文档中要求:
1。 要使用形如get_the_ID(), get_the_title()等方法, 需要先进行setup_postdata($post)
2。 或者直接使用形如: $post->ID, (注意Column名要写对)
从此处推理或从代码中搜索亦可印证: setup_postdata($post)作用只是对数据库读取的值进行处理,以便使用get_the_ID()等方式直接获取Attribute.
对于普通用户来讲:
用越多的Recent, Related, Random的Post会成倍增加SELECT的数量与对数据库的压力(当然, 前提是你博客流浪巨大的情况下, 如果只是跟本站一般低迷, 就不需要考虑这么多了)
废话一句: qury.php里的method好长啊
用Wordpress这么久了, 从没看过文档也没用过API. 近期有如此需求, 譬如说我站内已有一个网站, 另有一个Wordpress, 两个都在一个主机上, 我希望在WordPress之外使用其API, 显示文章列表啊什么的.
发现有如下之参考: see: http://www.webopius.com/content/139/using-the-wordpress-api-from-pages-outside-of-wordpress
在php文档一开头就声明:
<?php define('WP_USE_THEMES', false); ?> <?php require('wp-blog-header.php');?>
此后, WordPress API可用.
的确可用.
但今天在讨论Wordpress读取post的SQL时对qury进行了debug, 发现, 只要include/require了 wp-blog-heard.php就会立马辗转Call一下Classes.query_posts(), 先查询10个post再说.
分析后发现不可引用wp-blog-heard.php, 转而引用:wp-load.php就够.
因此, 如果需要在站外使用API, php声明:
define('WP_USE_THEMES', false); require 'C:\xampp\htdocs\wp\wp-load.php'; // instead of wp-blog-header.php
网上有很多Mail()乱码的解决方案, 但试了几个都不. 彻底的解决方法是重写php.ini中的代码设置: 将以下代码加到mail()前:
/** * Solve the email problem. */ ini_set("mbstring.language", "Neutral"); ini_set("mbstring.internal_encoding", "UTF-8"); ini_set("mbstring.http_input", "UTF-8"); ini_set("mbstring.http_output", "UTF-8"); ini_set("mbstring.encoding_translation", "On"); ini_set("mbstring.detect_order", "auto"); ini_set("mbstring.substitute_character", "long");
初学.
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.