技术圈开发者交流群:

快速开始 - Casbin基础知识

Casbin中最核心的三个概念:Model, Policy, Enforcer

Model就是一个CONF文件,基于PERM metamodel (Policy, Effect, Request, Matchers)。

PHP 2019年02月13日 33069

PHP -Casbin: 支持 ACL、RBAC、ABAC 多种模型的 PHP 权限管理框架

PHP-Casbin 是一个用 PHP 语言打造的轻量级开源访问控制框架( https://github.com/php-casbin/php-casbin ),目前在 GitHub 开源。PHP-Casbin 采用了元模型的设计思想,支持多种经典的访问控制方案,如基于角色的访问控制 RBAC、基于属性的访问控制 ABAC 等。

1.支持自定义请求的格式,默认的请求格式为{subject, object, action};

2.具有访问控制模型 model 和策略 policy 两个核心概念;

PHP 2018年11月01日 73011

PHP中字符串与byte字节数组的互相转化

经常会看到java里的这样的类型:

byte[] IV = { 0, 0, 0, 0, 0, 0, 0, 0 }

可惜的是,php作为弱类型语言,并没那么丰富的类型,下面提供了PHP中字符串与byte字节数组的互相转化的实例:

/**
 * Byte数组转字符串
 * @param  array $bytes
 * @return string
 */
function bytesToStr($bytes)
{
    $str = '';
    foreach ($bytes as $ch) {
        $str .= chr($ch);
    }
    return $str;
}

/**
 * 字符串转Byte数组
 * @param  string $string
 * @return array
 */
function strToBytes($string)
{
    $bytes = array();
    for ($i = 0; $i < strlen($string); $i++) {
        $bytes[] = ord($string[$i]);
    }
    return $bytes;
}
PHP 2018年09月21日 69542

Laravel 开启跨域功能

人在江湖走,哪有不湿鞋?

经常做api开发的的时候,总会遇到跨域的情况,特别是前后端完全分离的情况,为什么会这样呢?

PHP 2018年08月29日 77074

PHP7版的Des加解密,支持ECB,CBC等模式,兼容java、C#

最近对接一大堆接口,找了各种des加解密,很多都是php7以下的,要知道mcrypt_decrypt此类的方法再php7以上已经过时或废除了

Warning
This function has been DEPRECATED as of PHP 7.1.0 and REMOVED as of PHP 7.2.0. Relying on this function is highly discouraged.

搞了好久,好不容易看到了这个 https://blog.csdn.net/qq43599939/article/details/80226482 ,终于将C#、Java的代码转换成了php7的代码:

<?php

/**
 * Des加解密,兼容java、C#
 */
class Des
{

    /**
     * 加密
     * @author TechLee
     * @param  string $input
     * @param  string $key
     * @param  string $method
     * @param  string $iv
     * @return string
     */
    public static function encrypt($input, $key, $method = 'DES-ECB', $iv = null)
    {
        $iv = $iv ? $iv : self::createIv();
        return base64_encode(openssl_encrypt($input, $method, $key, OPENSSL_RAW_DATA, $method == 'DES-ECB' ? '' : $iv));
    }

    /**
     * 解密
     * @author TechLee
     * @param  string $input
     * @param  string $key
     * @param  string $method
     * @param  string $iv
     * @return string
     */
    public static function decrypt($input, $key, $method = 'DES-ECB', $iv = null)
    {
        $iv = $iv ? $iv : self::createIv();
        return openssl_decrypt(base64_decode($input), $method, $key, OPENSSL_RAW_DATA, $method == 'DES-ECB' ? '' : $iv);
    }

    /**
     * 这个玩意相当于java里的
     * byte[] iv = { 0, 0, 0, 0, 0,0, 0, 0 }
     * 也相当于C#里的
     * IV = new byte[8];
     * @author TechLee
     * @return [type] [description]
     */
    public static function createIv()
    {
        return self::hexToStr("0000000000000000");
    }

    public static function hexToStr($hex)
    {
        $string = '';
        for ($i = 0; $i < strlen($hex) - 1; $i += 2) {
            $string .= chr(hexdec($hex[$i] . $hex[$i + 1]));
        }
        return $string;
    }
}
PHP 2018年08月24日 423970

Thinkphp5中配置XHProf性能分析工具

ThinkPHP中的行为是一个比较抽象的概念,你可以把行为想象成在应用执行过程中的一个动作。

不熟悉的xhprof的,请参考前一篇文章:http://www.tech1024.com/original/2990.html

如果你还不了解thinkphp的钩子行为,可以参考手册:https://www.kancloud.cn/manual/thinkphp5_1/354129

首先,我们在application/tags.php文件中,定义性能分析的行为,分别绑定在app_initapp_initApp初始化标和应用结束的钩子上:

PHP 2018年08月12日 65439

XHProf,PHP性能分析利器,快速定位代码瓶颈

很多项目,还没到考虑性能的时候就夭折了,而你项目是否到了要考虑性能优化的时候了?

经常会有人问,我的cpu正常,内存正常,数据库正常,可网站打开为什么就是?为什么就是

在当今硬件如此廉价的时候,也许考虑代码性能并非必要,要么人遭罪,要么钱遭罪,8G不够换16G,一台不行,加两台。。。

PHP 2018年08月01日 54210

PHP设计模式——简单工厂模式(Simple Factory)

工厂主要有三种模式:抽象工厂、简单工厂、工厂方法,本文所说的是简单工厂模式,其他两种模式也是大同小异。

项目中,在不确定有多少种处理操作时,可以用简单工厂模式。

比如:

数据库的连接,可能是mysql,也可能是oracle

PHP 2018年05月09日 64913

PHP设计模式——单例模式(Singleton)

简单说来,单例模式的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个,同时这个类还必须提供一个访问该类的全局访问点。

数据库连接器(mysql|Oracle|sqlServer);

缓存/日志(file|redis|memcached);

在应用中锁定文件;

PHP 2018年05月09日 400383

PHP实现类的自动加载,构建一个面向对象(OOP)的应用

在编写面向对象(OOP) 程序时,通常是一个类新建一个 PHP 文件。 然而,在调用其他类的时候都需要去包含(include或require)这个类所在的php文件。

有没更简单的方法呢,答案当然是 有!!!

使用 spl_autoload_register() 函数注册任意数量的自动加载器。

PHP 2018年05月07日 54839

Laravel从现有数据库逆向生成数据库迁移文件,包括索引和外键!

熟悉laravel的同学都知道,laravel的数据迁移和数据填充,能够随着源代码的改变而同步记录同步数据库结构的变化,也就是对数据库的版本控制。

但是,有的项目开发之初,数据库结构的变化会比较频繁,每个都手动创建migrate文件的,工作量会比较大,或者老项目已有数据库,如果手动为所有的已存在的表去创建迁移文件的会非常耗时,还容易出错。

这里,就给大家分享一下如何逆向生成迁移文件。

PHP 2018年01月04日 418018

Laravel中利用Scout集成Elasticsearch搜索引擎

Elasticsearch(以下简称es)是一个实时的分布式搜索和分析引擎。

在搜索引擎方面,不仅仅有Elasticsearch,像另一篇提到的Algolia,还有sphinx、Solr等等,这里不做评价和比较,本篇主要介绍laravel中如何使用Elasticsearch。

PHP 2017年11月07日 66072

Laravel 全文检索 Scout集成Algolia

你是否在检索千百万级数据时为性能和速度而担忧呢,即使优化了sql,创建了数据库索引,还是不尽如人意呢? 下面就主要介绍laravel如何集成Algolia

Algolia是法国初创公司为你提供毫秒级的数据库实时搜索服务,天下武功无坚不摧,唯快不破。记住哦,是毫秒级。

本文基于laravel5.5,其他版本大同小异。

composer require laravel/scout
composer require algolia/algoliasearch-client-php
PHP 2017年10月29日 68612

排行

解决方案

网站建设

专业企业官网建设,塑造企业形象,传递企业价值

系统开发

系统软件开发,用心思考,用心设计,用心体验

技术支撑

打破技术瓶颈,让不堪重负的项目起死回生

业务中台

构建全渠道一体化运营能力,实现全链路数字化

文案策划

文案撰写、营销策划,专注品牌全案

新媒体运营

一站式解决企业互联网营销痛点和难题

以技术的力量,改变互联网

联系我们
鄂ICP备19028750号-1 @copyright 2021 tech1024.com