PHP7新特性概括总结

PHP7对系统引擎做了大量优化工作

FACEBOOK的重构PHP引擎HHVM使其性能提高70% 使用PHP7开发程序响应速度提高将比HHVM更高

PHP7主要吸收了zend系统和FACEBOOK的HHVM系统的特性

PHP5.6-PHP7比较

PHP7 增加了捕获引擎出错 而非原来的致命错误

PHP中的变量在底层是一个zval的C指针的结构体动态分配一个内存 在PHP7中使用栈内存 节省了内存

数组键值生成HASH值 一般不会变 反复计算建的HASH值浪费资源 PHP7中将不变的键值储存起来 节省内存和运行时间

原版PHP版本存变量的HASHTABLE桶 每次存变量 申请一次内存 且不连续 PHP7中将一次性连续储存变量 所有变量占用一块连续的内存

原版PHP中 call_user_function is_array/int/string strlen defined 函数编程opcode函数

基础数据类型int float bool变成直接拷贝值

原版PHP使用C中的函数进行排序 PHP7重写了所有排序函数 preg_函数变成机器码

关于dedecms模板标签笔记

1.url标签
{dede:global.cfg_templets_skin/}

2.引用标签 header  footer  

{dede:include filename=”header.htm”/}
{dede:include filename=”footer.htm”/}

3.当前位置: 

{dede:field name=’position’/} 

4.文章数据

因为dede系统 自带文章字段定义 因此输出变量

{dede:field.字段名/}

标题:
{dede:field.title/}

特殊:

(责任编辑:{dede:adminname/})  

时间:{dede:field.pubdate function=”MyDate(‘Y-m-d H:i’,@me)”/}

点击量编写:

<script src=”{dede:field name=’phpurl’/}/count.php?view=yes&aid={dede:field name=’id’/}&mid={dede:field name=’mid’/}” type=’text/javascript’ language=”javascript”></script>

{dede:field.click/} 

简介:
{dede:field.description runphp=’yes’}
{/dede:field.description}
———————-
{dede:field.description runphp=’yes’}
  if(@me<>” )@me = ‘
      <div class=”intro”>’.@me.'</div>
                                 ‘;

{/dede:field.description}



文章数据 字段如下

{dede:field.array runphp=’yes’ }@me = print_r(@me,true);{/dede:field.array}
Array
(
    [id] => 
    [typeid] => 
    [typeid2] => 
    [sortrank] => 
    [flag] => 
    [ismake] => 
    [channel] => 
    [arcrank] => 
    [click] =>
    [money] => 
    [title] => 
    [shorttitle] => 
    [color] => 
    [writer] => 
    [source] => 
    [litpic] => 
    [pubdate] => 
    [senddate] => 
    [mid] => 
    [keywords] => 
    [lastpost] => 
    [scores] => 
    [goodpost] => 
    [badpost] => 
    [voteid] => 
    [notpost] => 
    [description] => 
    [filename] => 
    [dutyadmin] => 
    [tackid] =>
    [mtype] =>
    [weight] => 
    [reid] => 
    [typedir] => 
    [addtable] => 
    [tags] => 
    [aid] => 
    [position] => 
    [phpurl] =>
    [indexurl] =>
    [templeturl] => 
    [memberurl] => 
    [specurl] => 
    [indexname] => 
    [templetdef] => 
    [redirecturl] => 
    [templet] => 
    [userip] => 
    [displaytype] => 
    [body] => 
    [typename] => 
    [totalpage] => 
    [picname] => 
    [image] => 
    [badper] => 
    [goodper] => 
    [nowpage] => 
)

5.列表页面 特殊标签

列表代码
{dede:list pagesize=’10’}

[field:title/]
[field:arcurl/]
[field:litpic/]

[field:typename/]
[field:typeurl/]

{/dede:list}

分页代码
   <ul class=”pagelist”>
    {dede:pagelist listitem=”info,index,end,pre,next,pageno,option” listsize=”5″/}
   </ul>

6.公共标签
{dede:…………/}
全局变量
网站名字:
{dede:global.cfg_webname/}
网站模板目录url 
{dede:global.cfg_templets_skin/}

其他的 参考 网站后台 -> 基本参数

———————————————-
文章列表:arclist
{dede:arclist  typeid=’2′ row=’5′  }
图片:[field:litpic/]
<li>  <a href=”[field:typeurl/]”>[field:typename/]</a>  – <a href=”[field:arcurl/]”>[field:title/]</a> </li>
{/dede:arclist}

字段参考一下数组:
[field:array runphp=’yes’]@me = print_r(@me,true);[/field:array]
Array
(
    [id] => 12
    [typeid] => 2
    [typeid2] => 0
    [sortrank] => 1459843966
    [flag] => 
    [ismake] => -1
    [channel] => 1
    [arcrank] => 0
    [click] => 121
    [money] => 0
    [title] => 我叫杨帅,我要找对象
    [shorttitle] => 
    [color] => 
    [writer] => admin
    [source] => 未知
    [litpic] => /images/defaultpic.gif
    [pubdate] => 1459843966
    [senddate] => 1459843605
    [mid] => 1
    [keywords] => 我叫,杨帅,我,要找,对象,有没有,妹子,我想,找,
    [lastpost] => 0
    [scores] => 0
    [goodpost] => 0
    [badpost] => 0
    [voteid] => 0
    [notpost] => 0
    [description] => 有没有妹子,我想找对象
    [filename] => /plus/view.php?aid=12
    [dutyadmin] => 1
    [tackid] => 0
    [mtype] => 0
    [weight] => 8
    [typedir] => {cmspath}/html/CSSjiaocheng
    [typename] => CSS教程
    [corank] => 0
    [isdefault] => -1
    [defaultname] => index.html
    [namerule] => {typedir}/{aid}.html
    [namerule2] => {typedir}/list_{tid}_{page}.html
    [ispart] => 0
    [moresite] => 0
    [siteurl] => 
    [sitepath] => {cmspath}/html/CSSjiaocheng
    [infos] => 有没有妹子,我想找对象
    [info] => 有没有妹子,我想找对象
    [arcurl] => /plus/view.php?aid=12
    [typeurl] => /plus/list.php?tid=2
    [picname] => /images/defaultpic.gif
    [stime] => 2016-04-05
    [typelink] => <a href=’/plus/list.php?tid=2′>CSS教程</a>
    [image] => <img src=’/images/defaultpic.gif’ border=’0′ width=’120′ height=’120′ alt=’我叫杨帅,我要找对象’>
    [imglink] => <a href=’/plus/view.php?aid=12′><img src=’/images/defaultpic.gif’ border=’0′ width=’120′ height=’120′ alt=’我叫杨帅,我要找对象’></a>
    [fulltitle] => 我叫杨帅,我要找对象
    [textlink] => <a href=’/plus/view.php?aid=12′>我叫杨帅,我要找对象</a>
    [phpurl] => /plus
    [plusurl] => /plus
    [memberurl] => /member
    [templeturl] => /templets
)

详细参考 网站后台  ->  模板 ->  默认模板管理 -> 修改模板

7.获取栏目列表标签
channel
type = ‘top’  获取顶层栏目
type = ‘son’  typeid= ‘x’  他有子栏目  输出子栏目  |  没有子栏目输出同级栏目
type = ‘self’ 输入同级栏目 但是typeid 不可是 等级栏目
{dede:channel row = ’10’ type = ‘son’ }
<li><a href='[field:typelink/]’>[field:typename/]</a> </li>
{/dede:channel}

8.单个栏目的链接标签
{dede:type typeid=’1′}
<a href=”[field:typelink /]”>[field:typename /]</a>
{/dede:type}

9.具体某篇文章数据输出

因为dede文章属性文章内容不在同一表中 在特定位置调取特定文章方法的 arclist 中 没有body(正文字段) 需要两表关联查询 对其添加字段body
代码:
{dede:arclist  idlist =’3′  addfields=’body’  channelid=’1′  }
[field:body/]
{/dede:arclist}

关于安装/上传wordpress站 遇到500 Internal Server Error

    相信大家无论是玩还是其他处于其他目的在建设自己的网站中都会遇到很多离奇的插曲    比如我在上传此站的第一天便遇到了麻烦。

    1. 首先在安装过程中 多次遇到500 Internal Server Error  当时以为是数据库连接信息错误或网站配置错误 没有解决 

    2.换个方法 将本地安装好的wp以及数据上传 

    OK 这回上传成功了 在数据库中的options修改了配置后 可以成功打开wp站 但是在进行与后台有关的操作时 又会遇到500 Internal Server Error

    简直是万恶的500 ERROR

查询500错误如下:

Internal Server Error 500 错误是一个通常的错误,原因可能有很多,往往是服务器进程内组件、模块或服务器调用的进程外组件等造成的错误。但如果不作如上操作,你是看不到具体的错误原因的,浏览器仅仅显示一个笼统的错误号码:500 

好吧 粗略看了下解释 对于解决问题并没有什么卵用

针对wp的解决方法:

在./wp-includes/class-http.php中搜索

$request_order = apply_filters( ‘http_api_transports’, array( ‘curl’, ‘streams’ ), $args, $url );

将其中额‘curl’, 去掉

而我的wp是新版本其中代码如下

$transports = array( ‘curl’, ‘streams’ );

$request_order = apply_filters( ‘http_api_transports’, $transports, $args, $url );

也就是把 ‘curl’, 去掉

phpExcel中文帮助手册

1、设置excel的属性:
创建人
$objPHPExcel->getProperties()->setCreator(“Maarten Balliauw”);
最后修改人
$objPHPExcel->getProperties()->setLastModifiedBy(“Maarten Balliauw”);
标题
$objPHPExcel->getProperties()->setTitle(“Office 2007 XLSX Test Document”);
题目
$objPHPExcel->getProperties()->setSubject(“Office 2007 XLSX Test Document”);
描述
$objPHPExcel->getProperties()->setDescription(“Test document for Office 2007 XLSX, generated using PHP classes.”);
关键字
$objPHPExcel->getProperties()->setKeywords(“office 2007 openxml php”);
种类
$objPHPExcel->getProperties()->setCategory(“Test result file”);
设置当前的sheet
$objPHPExcel->setActiveSheetIndex(0);
设置sheet的name
$objPHPExcel->getActiveSheet()->setTitle(‘Simple’);
设置单元格的值
复制代码 代码示例:
$objPHPExcel->getActiveSheet()->setCellValue(‘A1’, ‘String’);
$objPHPExcel->getActiveSheet()->setCellValue(‘A2’, 12);
$objPHPExcel->getActiveSheet()->setCellValue(‘A3’, true);
$objPHPExcel->getActiveSheet()->setCellValue(‘C5’, ‘=SUM(C2:C4)’);
$objPHPExcel->getActiveSheet()->setCellValue(‘B8’, ‘=MIN(B2:C5)’);
合并单元格
复制代码 代码示例:
$objPHPExcel->getActiveSheet()->mergeCells(‘A18:E22’);
分离单元格
复制代码 代码示例:
$objPHPExcel->getActiveSheet()->unmergeCells(‘A28:B28’);
保护cell
复制代码 代码示例:
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); // Needs to be set to true in order to enable any worksheet protection!
$objPHPExcel->getActiveSheet()->protectCells(‘A3:E13’, ‘PHPExcel’);
设置格式
复制代码 代码示例:
// Set cell number formats
echo date(‘H:i:s’) . ” Set cell number formats\n”;
$objPHPExcel->getActiveSheet()->getStyle(‘E4’)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);
$objPHPExcel->getActiveSheet()->duplicateStyle( $objPHPExcel->getActiveSheet()->getStyle(‘E4’), ‘E5:E13’ );
设置宽width
复制代码 代码示例:
// Set column widths
$objPHPExcel->getActiveSheet()->getColumnDimension(‘B’)->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘D’)->setWidth(12);
设置font
复制代码 代码示例:
$objPHPExcel->getActiveSheet()->getStyle(‘B1’)->getFont()->setName(‘Candara’);
$objPHPExcel->getActiveSheet()->getStyle(‘B1’)->getFont()->setSize(20);
$objPHPExcel->getActiveSheet()->getStyle(‘B1’)->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle(‘B1’)->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
$objPHPExcel->getActiveSheet()->getStyle(‘B1’)->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE);
$objPHPExcel->getActiveSheet()->getStyle(‘E1’)->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE);
$objPHPExcel->getActiveSheet()->getStyle(‘D13’)->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle(‘E13’)->getFont()->setBold(true);
设置align
复制代码 代码示例:
$objPHPExcel->getActiveSheet()->getStyle(‘D11’)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle(‘D12’)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle(‘D13’)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle(‘A18’)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
//垂直居中
复制代码 代码示例:
$objPHPExcel->getActiveSheet()->getStyle(‘A18’)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
设置column的border
复制代码 代码示例:
$objPHPExcel->getActiveSheet()->getStyle(‘A4’)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getActiveSheet()->getStyle(‘B4’)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getActiveSheet()->getStyle(‘C4’)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getActiveSheet()->getStyle(‘D4’)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getActiveSheet()->getStyle(‘E4’)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
设置border的color
复制代码 代码示例:
$objPHPExcel->getActiveSheet()->getStyle(‘D13’)->getBorders()->getLeft()->getColor()->setARGB(‘FF993300’);
$objPHPExcel->getActiveSheet()->getStyle(‘D13’)->getBorders()->getTop()->getColor()->setARGB(‘FF993300’);
$objPHPExcel->getActiveSheet()->getStyle(‘D13’)->getBorders()->getBottom()->getColor()->setARGB(‘FF993300’);
$objPHPExcel->getActiveSheet()->getStyle(‘E13’)->getBorders()->getTop()->getColor()->setARGB(‘FF993300’);
$objPHPExcel->getActiveSheet()->getStyle(‘E13’)->getBorders()->getBottom()->getColor()->setARGB(‘FF993300’);
$objPHPExcel->getActiveSheet()->getStyle(‘E13’)->getBorders()->getRight()->getColor()->setARGB(‘FF993300’);
设置填充颜色
复制代码 代码示例:
$objPHPExcel->getActiveSheet()->getStyle(‘A1’)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle(‘A1’)->getFill()->getStartColor()->setARGB(‘FF808080’);
$objPHPExcel->getActiveSheet()->getStyle(‘B1’)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle(‘B1’)->getFill()->getStartColor()->setARGB(‘FF808080’);
加图片
复制代码 代码示例:
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName(‘Logo’);
$objDrawing->setDescription(‘Logo’);
$objDrawing->setPath(‘./images/officelogo.jpg’);
$objDrawing->setHeight(36);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName(‘Paid’);
$objDrawing->setDescription(‘Paid’);
$objDrawing->setPath(‘./images/paid.png’);
$objDrawing->setCoordinates(‘B15’);
$objDrawing->setOffsetX(110);
$objDrawing->setRotation(25);
$objDrawing->getShadow()->setVisible(true);
$objDrawing->getShadow()->setDirection(45);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
//处理中文输出问题
需要将字符串转化为UTF-8编码,才能正常输出,否则中文字符将输出为空白,如下处理:
$str = iconv(‘gb2312’, ‘utf-8’, $str);
或者可以写一个函数专门处理中文字符串:
复制代码 代码示例:
function convertUTF8($str)
{
if(empty($str)) return ”;
return iconv(‘gb2312’, ‘utf-8’, $str);
}
//从数据库输出数据处理方式
从数据库读取数据如:
复制代码 代码示例:
$db = new Mysql($dbconfig);
$sql = “SELECT * FROM 表名”;
$row = $db->GetAll($sql); // $row 为二维数组
$count = count($row);
for ($i = 2; $i <= $count+1; $i++) {
$objPHPExcel->getActiveSheet()->setCellValue(‘A’ . $i, convertUTF8($row[$i-2][1]));
$objPHPExcel->getActiveSheet()->setCellValue(‘B’ . $i, convertUTF8($row[$i-2][2]));
$objPHPExcel->getActiveSheet()->setCellValue(‘C’ . $i, convertUTF8($row[$i-2][3]));
$objPHPExcel->getActiveSheet()->setCellValue(‘D’ . $i, convertUTF8($row[$i-2][4]));
$objPHPExcel->getActiveSheet()->setCellValue(‘E’ . $i, convertUTF8(date(“Y-m-d”, $row[$i-2][5])));
$objPHPExcel->getActiveSheet()->setCellValue(‘F’ . $i, convertUTF8($row[$i-2][6]));
$objPHPExcel->getActiveSheet()->setCellValue(‘G’ . $i, convertUTF8($row[$i-2][7]));
$objPHPExcel->getActiveSheet()->setCellValue(‘H’ . $i, convertUTF8($row[$i-2][8]));
}
在默认sheet后,创建一个worksheet
在这里插入一段,之前脚本学堂也为大家介绍过几篇有关phpexcel的文章,有兴趣的朋友可以看看:
使用PHPExcel判别和格式化Excel中的日期格式的例子
phpexcel导出excel的颜色与网页中颜色不一致的解决方法
CI中使用PHPExcel导出数据到Excel
复制代码 代码示例:
echo date(‘H:i:s’) . ” Create new Worksheet object\n”;
$objPHPExcel->createSheet();
$objWriter = PHPExcel_IOFactory::createWriter($objExcel, ‘Excel5’);
$objWriter-save(‘php://output’);
附,几个常用的使用方法。
复制代码 代码示例:
<?php
include ‘PHPExcel.php’;
include ‘PHPExcel/Writer/Excel2007.php’;
//或者include ‘PHPExcel/Writer/Excel5.php’; 用于输出.xls的
创建一个excel
$objPHPExcel = new PHPExcel();
保存excel—2007格式
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
//或者$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 非2007格式
$objWriter->save(“xxx.xlsx”);
直接输出到浏览器
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
header(“Pragma: public”);
header(“Expires: 0″);
header(“Cache-Control:must-revalidate, post-check=0, pre-check=0″);
header(“Content-Type:application/force-download”);
header(“Content-Type:application/vnd.ms-execl”);
header(“Content-Type:application/octet-stream”);
header(“Content-Type:application/download”);;
header(‘Content-Disposition:attachment;filename=”resume.xls”‘);
header(“Content-Transfer-Encoding:binary”);
$objWriter->save(‘php://output’);
?>