php从以前到现在一直都是单继承的语言,无法同时从两个基类中继承属性和方法,为了解决这个问题,php出了Trait这个特性

用法:通过在类中使用use 关键字,声明要组合的Trait名称,具体的Trait的声明使用Trait关键词,Trait不能实例化

如下代码实例:

<?php
trait Dog{
    public $name="dog";
    public function bark(){
        echo "This is dog";
    }
}
class Animal{
    public function eat(){
        echo "This is animal eat";
    }
}
class Cat extends Animal{
    use Dog;
    public function drive(){
        echo "This is cat drive";
    }
}
$cat = new Cat();
$cat->drive();
echo "<br/>";
$cat->eat();
echo "<br/>";
$cat->bark();
?>

输出

- 阅读剩余部分 -

本文实例讲述了php计算两个日期相差天数的方法。分享给大家供大家参考。具体实现方法如下:

实例一:

/**
 * 求两个日期之间相差的天数
 * (针对1970年1月1日之后,求之前可以采用泰勒公式)
 * @param string $date1
 * @param string $date2
 * @return number
 */
function diff_date($date1, $date2){
    if($date1>$date2){
        $startTime = strtotime($date1);
    $endTime = strtotime($date2);
    }else{
    $startTime = strtotime($date2);
    $endTime = strtotime($date1);
    }
    $diff = $startTime-$endTime;
    $day = $diff/86400;
    return intval($day);
}

- 阅读剩余部分 -

Laravel 5.6 中文文档
http://laravelacademy.org/laravel-docs-5_6
http://laravelacademy.org/post/8900.html
http://laravelacademy.org/post/8851.html
注:想要快速上手?只需要在新安装的 Laravel 应用下运行 php artisan make:auth 和 php artisan migrate,这两个命令会生成用户登录注册所需要的所有东西,然后在浏览器中访问 http://your-app.dev/register 即可。

php artisan make:auth
php artisan migrate

创建用户模块 以及数据库

友情提示:新建的用于登录认证的模型类需要继承 IlluminateFoundationAuthUser 基类,不然后面就会出现不能认证的窘况。

use Illuminate\Foundation\Auth\User;
php artisan make:model Admin -m

模型Admin.php(参考appUser.php)





- 阅读剩余部分 -

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>利用jquery制作滚动到指定位置触发动画</title>
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<style type="text/css">
*{ margin:0px; padding:0px;}
.gs{
position:relative;
top:100px; 
background-color:#099; 
left:150px; width:80px; 
}
.xz{
animation:roate 2s;
animation-fill-mode:forwards;
animation-direction:alternate;
}
@keyframes roate{
    from { transform:rotate(0deg);
    width:100px;
  height:100px; }
    to{transform:rotate(360deg);
    width:200px;
  height:200px;
    }}
.xs{ width:50px; float: left; height:30px; background-color: #F90; position:fixed; left:700px; top:0px;}
</style>
</head>
 
<body>
<script type="text/javascript">
/*var a,b,c;
a=$("#dh").offset().top;//元素相对于窗口的距离
b=$(window).scrollTop(); //监控窗口已滚动的距离;
c=$(document).height();//整个文档的高度
d=$(window).height();//浏览器窗口的高度
element  标签
cssname  动画
offset  相对于窗口的距离
*/
function scrollnumber(element,cssname,offset){
    var a,b,c,d;
    d=$(element).offset().top;
    a=eval(d + offset);
    b=$(window).scrollTop(); 
    c=$(window).height();
    if(b+c>a){
        $((element)).addClass((cssname));
    }
}
 
function scrollfun(){
    scrollnumber("#dh1",'xz',100);
    scrollnumber("#dh2",'xz',100);
    scrollnumber("#dh3",'xz',100);
    scrollnumber("#dh4",'xz',100);
}
    
$(document).ready(function(e) {
    scrollfun();
    $(window).scroll(function(){
        scrollfun();
    });
});
</script>
 
<div style="height:auto; background-color:#999; width:500px; margin: 0 auto;">
    <div class="com" style="height: 500px;background-color: darkgray;position: relative;">
        <div id="dh1" class="gs" >触发动画111</div>
    </div>
    <div style="height: 600px;background-color: cadetblue;" ></div>
    <div class="com" style="height: 500px;background-color: darkgray;position: relative;">
        <div id="dh2" class="gs" >触发动画222</div>
    </div>
    <div style="height: 600px;background-color: darkseagreen;" ></div>
    <div class="com" style="height: 500px;background-color: darkgray;position: relative;">
        <div id="dh3" class="gs" >触发动画333</div>
    </div>
    <div style="height: 600px;background-color: cadetblue;" ></div>
    <div class="com" style="height: 500px;background-color: darkgray;position: relative;">
        <div id="dh4" class="gs" >触发动画444</div>
    </div>
</div>
</body>
</html>

https://blog.csdn.net/yaoyyl/article/details/51396891

一、json_encode()

<?php
$arr =array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
?>

输出

{"a":1,"b":2,"c":3,"d":4,"e":5}

再看一个对象转换的例子:

$obj->body           = 'another post';
$obj->id             = 21;
$obj->approved       = true;
$obj->favorite_count = 1;
$obj->status         = NULL;
echo json_encode($obj);

- 阅读剩余部分 -

数据库建立索引常用的规则如下:
1、表的主键、外键必须有索引; 
2、数据量超过300的表应该有索引; 
3、经常与其他表进行连接的表,在连接字段上应该建立索引; 
4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引; 
5、索引应该建在选择性高的字段上; 
6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引; 
7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:








- 阅读剩余部分 -

CentOS开机提示 Centos kernel panic-not syncing:VFS:Unable to mount root fs on unknown-block 错误。

原因:主要问题就是你更新了CentOS内核之后出现的问题。
解决方案:开机启动时按Esc,然后选择下面的旧版本的内核启动即可。(成功进入系统后,你可以选择改变开机默认选择的内核)。
运行环境:CentOS6.7
故障原因:昨天在线执行命令yum -y update 在命令执行途中,强制中断并直接运行poweroff命令关机。




- 阅读剩余部分 -

本文介绍了PHP开发中遇到的数组问题,这里介绍了判断PHP数组为空的5种方法,有需要的朋友可以借鉴参考一下。

1. isset功能:判断变量是否被初始化

说明:它并不会判断变量是否为空,并且可以用来判断数组中元素是否被定义过
注意:当使用isset来判断数组元素是否被初始化过时,它的效率比array_key_exists高4倍左右

<?php
$a = '';
$a['c'] = '';
if (!isset($a)) echo '$a 未被初始化' . "";
if (!isset($b)) echo '$b 未被初始化' . "";
if (isset($a['c'])) echo '$a 已经被初始化' . "";
// 显示结果为
// $b 未被初始化
// $a 已经被初始化

- 阅读剩余部分 -

public: 公有类型

在子类中可以通过self::var调用public方法或属性,parent::method调用父类方法
在实例中可以能过$obj->var 来调用 public类型的方法或属性

protected: 受保护类型

在子类中可以通过self::var调用protected方法或属性,parent::method调用父类方法
在实例中不能通过$obj->var 来调用  protected类型的方法或属性

- 阅读剩余部分 -

1、=>的用法
在php中数组默认键名是整数,也可以自己定义任意字符键名(最好是有实际意义),如:

$css=array('style'=>'0',‘color’=>‘green‘);

则$css['style']=='0',$css['color']=='green'。


- 阅读剩余部分 -