laravel常用命令

//执行迁移
php artisan migrate
//数据回滚
php artisan migrate:rollback
//webpack生产
npm run production
//发布webpack
npm run dev
//重建节点
npm rebuild node-sass
//创建新表
php artisan make:migration create_表名_table --create=表名
//填充数据
php artisan db:seed
//添加字段
php artisan make:migration add_添加信息_to_表名_table --table=表名
//创建控制器
php artisan make:controller 控制器复数Controller --resource
//创建模块
php artisan make:model 模块 -m
//创建视图
php artisan generate:view 文件夹.视图
//创建控制器模块数据库增删改查文件
php artisan generate:resource 表名
//查看路由
php artisan route
//自动加载
composer dumpautoload
//重置key
php artisan key:generate

wordpress FTP

使用FTP软件连接FTP空间,进入wp-content目录,新建tmp文件夹,设置文件夹的权限为777
下载:在FTP中返回网站根目录,找到wp-config.php这个PHP文件,下载到本地
修改:在wp-config.php中添加下列三行代码:
define(‘WP_TEMP_DIR’, ABSPATH.’wp-content/tmp’);/* WordPress的临时目录。*/
define(“FS_METHOD”, “direct”);
define(“FS_CHMOD_DIR”, 0777);
define(“FS_CHMOD_FILE”, 0777);
注意:要在定义ABSPATH的后面,即在它的后面添加
if ( !defined(‘ABSPATH’) )
define(‘ABSPATH’, dirname(__FILE__) . ‘/’);
================================
最后的代码应该是:
if ( !defined(‘ABSPATH’) )
define(‘ABSPATH’, dirname(__FILE__) . ‘/’);
define(‘WP_TEMP_DIR’, ABSPATH.’wp-content/tmp’);
define(“FS_METHOD”, “direct”);
define(“FS_CHMOD_DIR”, 0777);
define(“FS_CHMOD_FILE”, 0777);
彻底解决wordpress安装主题或插件需要FTP问题
上传:上传覆盖wp-config.php文件
设置wp-content目录中的plugins(插件)和themes(主题)文件夹权限为777。
至此,你的插件和主题已经可以自动更新了。
此为终极解决办法,其它都为阉割版本。
为了安全,应在.htaccess中把 tmp、themes、plugin 这些读写权限为777的文件夹,设置为没有执行权限。

WordPress多域名绑定方法

有时候想,如果wordpress能像discuz论坛一样,能用其他域名或IP访问同一网站而且打开帖子就好了。我在本地装了wordpress,而且绑定了域名,有网络的时候可以用域名访问和使用网站,但是没网络的时候想用IP访问使用却不能。比如我用192.168.1.2访问本地的网站是可以的,但是wordpress的后台已经设置的网址是abc.com,所以没网络的时候,不能打开文章,因为它的网址还是abc.com/123.html的格式,不是192.168.1.2/123.html格式。这一点就比不上discuz,因为discuz两者都可以访问和使用网站。

从网上收到了一个好方法,让wordpress也像discuz一样,可以多域名或IP访问使用同一网站。在网站根目录找到wp-config.php 文件,在文件里找代码 require_once(ABSPATH . ‘wp-settings.php’); 在其上面添加以下代码(一定要在这段代码的上面,不然无法读取CSS样式、图片等等。):

$home = ‘http://’.$_SERVER[‘HTTP_HOST’];

$siteurl = ‘http://’.$_SERVER[‘HTTP_HOST’];

define(‘WP_HOME’, $home);

define(‘WP_SITEURL’, $siteurl);

我们知道,PHP 中的 $_SERVER[‘HTTP_HOST’] 用于获得来路域名。这样,就能根据来路为 WP_HOME 和 WP_SITEURL 变量赋值,实现 WordPress 多域名绑定。

注意:为防止域名改变而造成图片不可用,必须在控制面板的“设置 (Settings) – 媒体 (Media)”里将“文件的完整 URL 地址”设为 “wp-content/uploads”(与“默认上传路径”参数相同)。如果你在固定链接里设置了非默认的其他项,在“文件的完整 URL 地址”添加 “wp-content/uploads”会使图片链接不对。

laravel npm run dev error

错误:SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode

node版本低,node5.0在文件第一行加 ”use strict”,或者更新node


brew upgrade node#更新node

curl -sL https://deb.nodesource.com/setup_6.x | bash –

apt-get install nodejs

错误:cross-env NODE_ENV=development webpack –watch –progress –hide-modules –config=node_modules/laravel-mix/setup/webpack.config.js

npm rebuild node-sass

npm run dev#successfully

PHP中spl_autoload_register函数的用法

spl_autoload_register
(PHP 5 >= 5.1.2)
spl_autoload_register — 注册__autoload()函数
说明
bool spl_autoload_register ([ callback $autoload_function ] )
将函数注册到SPL __autoload函数栈中。如果该栈中的函数尚未激活,则激活它们。
如果在你的程序中已经实现了__autoload函数,它必须显式注册到__autoload栈中。因为
spl_autoload_register()函数会将Zend Engine中的__autoload函数取代为spl_autoload()或
spl_autoload_call()。
参数
autoload_function 
欲注册的自动装载函数。如果没有提供任何参数,则自动注册autoload的默认实现函数
spl_autoload()。
返回值
如果成功则返回 TRUE,失败则返回 FALSE。
注:SPL是Standard PHP Library(标准PHP库)的缩写。它是PHP5引入的一个扩展库,其主要功能包括autoload机制的实现及包括各种Iterator接口或类。 SPL autoload机制的实现是通过将函数指针autoload_func指向自己实现的具有自动装载功能的函数来实现的。SPL有两个不同的函数 spl_autoload, spl_autoload_call,通过将autoload_func指向这两个不同的函数地址来实现不同的自动加载机制。
范例
设我们有一个类文件A.php,里面定义了一个名字为A的类:

view plaincopy to clipboardprint?
<?php   
class A   
{   
public function __construct()   
{   
echo 'Got it.';   
}   
}


然后我们有一个index.php需要用到这个类A,常规的写法就是

view plaincopy to clipboardprint?
<?php   
require('A.php');   
$a = new A();


但是有一个问题就是,假如我们的index.php需要包含的不只是类A,而是需要很多类,这样子就必须写很多行require语句,有时候也会让人觉得不爽。


不过在php5之后的版本,我们就不再需要这样做了。在php5中,试图使用尚未定义的类时会自动调用__autoload函数,所以我们可以通过编写__autoload函数来让php自动加载类,而不必写一个长长的包含文件列表。

例如在上面那个例子中,index.php可以这样写:

view plaincopy to clipboardprint?
<?php   
function __autoload($class)   
{   
$file = $class . '.php';   
if (is_file($file)) {   
require_once($file);   
}   
}   

$a = new A();

 

当然上面只是最简单的示范,__autoload只是去include_path寻找类文件并加载,我们可以根据自己的需要定义__autoload加载类的规则。

此外,假如我们不想自动加载的时候调用__autoload,而是调用我们自己的函数(或者类方法),我们可以使用spl_autoload_register来注册我们自己的autoload函数。它的函数原型如下:
bool spl_autoload_register ( [callback $autoload_function] )

我们继续改写上面那个例子:

view plaincopy to clipboardprint?
<?php   
function loader($class)   
{   
$file = $class . '.php';   
if (is_file($file)) {   
require_once($file);   
}   
}   

spl_autoload_register('loader');   

$a = new A();

 

这样子也是可以正常运行的,这时候php在寻找类的时候就没有调用__autoload而是调用我们自己定义的函数loader了。同样的道理,下面这种写法也是可以的:

view plaincopy to clipboardprint?
<?php   
class Loader   
{   
public static function loadClass($class)   
{   
$file = $class . '.php';   
if (is_file($file)) {   
require_once($file);   
}   
}   
}   

spl_autoload_register(array('Loader', 'loadClass'));   

$a = new A();

swift语言coredata第三方库MagicalRecord最简洁教程

cocoapods
MagicalRecord

pod ‘MagicalRecord’安装MagicalRecord

/*************************以下为教程****************************/

AppDelegate.swift
import MagicalRecord

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.
        MagicalRecord.setupCoreDataStack()//只加这句话初始化
        return true
    }

ViewController.swift
import MagicalRecord

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        /*创建*/
        let admin = Admin.MR_createEntity()//创建
        admin?.token = "1234"//编辑
        print("创建")
        NSManagedObjectContext.MR_defaultContext().MR_saveToPersistentStoreAndWait()//保存
        /*创建结束*/
        /*查询*/
        let admins = Admin.MR_findAll()//查询
        for a in admins as! [Admin]{
            print(a.token)
            a.token = "liuman"//编辑
            //a.MR_deleteEntity()//删除
        }
        print("条件查询token值为liuman的")
        let liuman = Admin.MR_findFirstByAttribute("token", withValue: "liuman")
        print(liuman!.token)
        /*查询结束*/
        //Admin.MR_truncateAll()//删除所有
        NSManagedObjectContext.MR_defaultContext().MR_saveToPersistentStoreAndWait()//创建编辑删除之后都要保存,原save方法,被取代了。
        //MagicalRecord.cleanUp()//app退出前操作,关闭coredata
    }

coredata:CRED

import CoreData

//添加数据
    func saveCoreDate(){
        //加载AppDelegate
        let app = UIApplication.sharedApplication().delegate as! AppDelegate
        //获取管理的上下文
        let context = app.managedObjectContext
        var error:NSError?
        //创建一个实例并给属性赋值
        let admin = NSEntityDescription.insertNewObjectForEntityForName("Admin", inManagedObjectContext: context) as! Admin
        admin.token = "1"
        //保存数据
        do {
            try context.save()
            print("success!")
        }catch let error{
            print("context can't save!, Error:\(error)")
        }
    }
    func fetchCoreData (){
        //加载AppDelegate
        let app = UIApplication.sharedApplication().delegate as! AppDelegate
        //获取管理的上下文
        let context = app.managedObjectContext
        // 声明数据请求实体
        let fetchRequest = NSFetchRequest(entityName: "Admin")
        let predicate = NSPredicate(format:"token='1'")
        //fetchRequest.predicate=predicate//设置查询条件按照id查找不设置查询条件,则默认全部查找
        //执行查询操作
        do {
            let list =
                try context.executeFetchRequest(fetchRequest) as! [NSManagedObject]
            print("打印查询结果")
            for i in list as! [Admin] {
                print(i)
                //修改操作:将查询到的结果修改后,再调用context.save()保存即可
                i.token = "1"
                //删除操作:将查询到的额结果删除后,再调用context.save()保存即可
                context.deleteObject(i)
            }
        }catch let error{
            print("context can't fetch!, Error:\(error)")
        }
        do {
            try context.save()
            print("success!")
        }catch let error{
            print("context can't save!, Error:\(error)")
        }
        
    }