Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 670|回复: 0

phalcon: 解决php7/phalcon3.2以上版本,不支持oracle数据库的方法

[复制链接]
  • TA的每日心情
    奋斗
    6 天前
  • 签到天数: 803 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726482
    发表于 2021-8-30 13:14:49 | 显示全部楼层 |阅读模式

    解决php7/phalcon3.2以上版本,不支持oracle数据库的方法

    phalcon3.2(3.0以上)版本不支持oracle的方法。

    https://github.com/phalcon/incubator

    参考以上路径的方法:

     

    我的phalcon是3.2.4

    1.在项目路径根目录下,我的:

     

    在根目录下,新建:composer.json,

    我的phalcon是3.2.4,那么对应的版本是3.2

    {
        "require": {
            "phalcon/incubator": "^3.2"
        }
    }
    

      

    2.然后执行安装

    curl -s http://getcomposer.org/installer | php

      

    3.安装:

    php composer.phar install
    

      

    4.在根木目录下,新建一个文件,来验证:

    $loader = new Phalcon\Loader();
    
    $loader->registerNamespaces([
        'Phalcon' => '/var/www/html/wxsdairpro/vendor/phalcon/incubator/Library/Phalcon/'
    ]);
    
    $loader->register();
    
    
    $database=array(
    		'adapter'     => 'Oracle',
    		'host'        => 'xxxxx',
    		'username'    => 'xxxxx',
    		'password'    => 'xxxxx',
    		'port'        => '1521',
    		'charset'     => 'AL32UTF8',
    		'service_name'  => 'wweborc'
    	       );
    extract($database);
    
    
    
    
    // vendor 自动加载
    spl_autoload_register(function ($class) {
        if ($class) {  
            $file = str_replace('\\', '/', $class);  
            $file .= '.php';  
    
            if (!file_exists($file)) {  
    	$classParts = explode("/", $file);
    	$rebuildClass = '';
    	foreach ($classParts as $part) {
    		$part = ucfirst($part);
    		$rebuildClass .= $part . "/";
    	}
    		$rebuildClass = rtrim($rebuildClass, "/");
    		$file = 'vendor/phalcon/incubator/Library/' . $rebuildClass;
    		//$file = "vendor/phalcon/incubator/Library/Phalcon/Db/Dialect/Oracle.php";
                include_once $file;  
            }  
        }  
    });  
    
    
    $db = new Phalcon\Db\Adapter\Pdo\Oracle(array(
    			'adapter'     => "{$adapter}",
    			'username'    => "{$username}",
    			'password'    => "{$password}",
    			'dbname'      => "//{$host}:{$port}/{$service_name}",
    			'charset'     => "{$charset}"
    			));
    
    
    $data = $db->fetchAll( " SELECT * FROM WX_USER WHERE rownum<10", Phalcon\Db::FETCH_ASSOC);
    var_dump($data);
    

      

    这里需要说一下,这里的包文件,涉及到oracle的类,命名空间,有大小写bug,所以需要转换一下:

     //记住这里,因为这个包中的oracle命名的大小写根phalcon中的oracle大小写有出入,所以需要转换一下

    spl_autoload_register(function ($class) {
        if ($class) {  
            $file = str_replace('\\', '/', $class);  
            $file .= '.php';  
    
            if (!file_exists($file)) {  
    	$classParts = explode("/", $file);
    	$rebuildClass = '';
    	foreach ($classParts as $part) {
                  
        
                    //记住这里,因为这个包中的oracle命名的大小写根phalcon中的oracle大小写有出入,所以需要转换一下
    		$part = ucfirst($part);
    		$rebuildClass .= $part . "/";
    	}
    		$rebuildClass = rtrim($rebuildClass, "/");
    		$file = 'vendor/phalcon/incubator/Library/' . $rebuildClass;
    		//$file = "vendor/phalcon/incubator/Library/Phalcon/Db/Dialect/Oracle.php";
                include_once $file;  
            }  
        }  
    });     
    

      

     //记住这里,因为这个包中的oracle命名的大小写根phalcon中的oracle大小写有出入,所以需要转换一下

     

     

    在入口文件处,修改一下:

     $loader = new Loader();
        $loader->registerDirs(
            array(
                __DIR__ . $config->application->ticketDir,
                __DIR__ . $config->application->wxpayDir,
                __DIR__ . $config->application->controllersDir,
                __DIR__ . $config->application->logicDir,
                __DIR__ . $config->application->modelsDir,
                __DIR__ . $config->application->pluginsDir,
                __DIR__ . $config->application->utilDir,
            )
        );
    	// important
    	$loader->registerNamespaces([
    	    'Phalcon' => __DIR__ .'/../vendor/phalcon/incubator/Library/Phalcon/'
    	]);
    	$loader->register();
    

      

      // Create a DI
        $di = new FactoryDefault();
    
        // Setup a base URI so that all generated URIs include the "tutorial" folder
        $di['url'] = function() {
            $url = new Url();
            $url->setBaseUri('/');
            return $url;
        };
    
    	// phalcon 3rd library vendor 自动加载
    	spl_autoload_register(function ($class) {
    	    if ($class) {  
    		$file = str_replace('\\', '/', $class);  
    		$file .= '.php';  
    
    		if (!file_exists($file)) {  
    		$classParts = explode("/", $file);
    		$rebuildClass = '';
    		foreach ($classParts as $part) {
    			$part = ucfirst($part);
    			$rebuildClass .= $part . "/";
    		}
    			$rebuildClass = rtrim($rebuildClass, "/");
    			$file = __DIR__ . '/../vendor/phalcon/incubator/Library/' . $rebuildClass;
    		    include_once $file;  
    		}  
    	    }  
    	});  
    

      

     

    下载地址:https://download.csdn.net/download/gzyftk/11472630

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-11-23 16:22 , Processed in 1.077225 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表