容易像CI(这意味着强制性好,简单,最新的文档).但也有一些比CI更多的功能.
Yii有很多功能,但它也更复杂(它有点迫使你必须使用它的很多功能).这意味着为您的网络应用添加一些功能需要三倍的时间,因为您必须找出许多新的小功能Yii.
这有点像CI在需要的时候"离开你的方式",Yii妨碍你,如果你不这样做,它会破坏.
CI中缺少的功能在这个新的"中间"PHP框架中很有用:
Yii给我带来问题的地方:
就像每个小任务都有一些内置功能(这很好),但是,你必须使用内置功能,否则会发生不好的事情.(CI让你不受欢迎,但是做得太多,Yii帮了很多,但有时候太过分了,它迫使你筛选文档,以便你发现这些功能,如果没有它们你就无法完成一项任务,需要花费四倍的时间,在CI或非框架应用程序中).
介于两者之间吗?
(ASP.NET MVC可能是'它',但我不懂语言,所以学习它的努力将比学习Yii php框架更好,所以我正在寻找一个PHP框架)
我正在开发一个小型网络应用程序.没有任何高级功能,只是来自数据库的基本查询.
该网站本身允许通过常规方式和Facebook Connect登录,然后它具有一些CRUD功能.
我将为它创建一个"原生"Facebook应用程序,以及一个iPhone应用程序和一个Android应用程序.
我的问题是,维护代码库的最佳方法是什么?
我之前已经创建了一个基本API,允许我添加,编辑和删除数据库记录,然后我在所有平台上使用HTTP POST到API.这使得维护代码库,修复错误,进行更新等非常容易,因为我只需要更新一个地方.各个应用程序本身只有一些皮肤,然后是一些cURL请求.虽然这对于移动应用程序(iPhone和Android)非常有用,但它确实在网站和Facebook应用程序上发出了不必要的http请求.
处理这种情况的最佳方法是什么?我应该创建2个网站(Facebook和普通网站)和API吗?这将使维护更加困难,但更加稳定和快速.只是一个API,这将使其易于维护?
代码库是CodeIgniter中的PHP,MySQL是数据库.
以下if条件导致错误:
if( !empty ($this -> session -> userdata( 'user_id') ) )
{
$user_id = $this -> session -> userdata( 'user_id' );
}
else
{
$error = "ID doesn't exist";
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Fatal error: Can't use method return value in write context in (line number)
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
bschaeffer's回答这个问题 - 在他的最后一个例子中:
$this->load->model('table');
$data = $this->table->some_func();
$this->load->view('view', $data);
Run Code Online (Sandbox Code Playgroud)
当'table'不存在时你如何处理?
try {
$this->load->model('serve_' . $model_name, 'my_model');
$this->my_model->my_fcn($prams);
// Model Exists
} catch (Exception $e) {
// Model does NOT Exist
}
Run Code Online (Sandbox Code Playgroud)
但仍然在运行之后(显然该模型不存在 - 但有时会存在)它失败并出现以下错误:
遇到了错误
无法找到您指定的模型:serve_forms
我通过以下方式调用此函数:
1)获得一些JSON:
Run Code Online (Sandbox Code Playgroud)"model_1:{"function_name:{"pram_1":"1", "pram_2":"1"}}
2)并将其转换为函数调用:
$ this-> load-> model('serve_'."model_1",'my_model');
3)我打电话给:
Run Code Online (Sandbox Code Playgroud)$this->my_model->function_name(pram_1=1, pram_2=1);
问题在于CodeIgniter的show_error(...)函数显示错误然后exit;...不酷...所以我覆盖:model(...)- > my_model(..)(如果你只是覆盖它你会得到错误)并删除show_error(...)因为某些原因你不能覆盖它 - 对Codeigniter来说很奇怪).然后在my_model(...)它中抛出异常
我的个人意见:调用函数应该
return show_error("message");在show_error返回的地方FALSE---或者你可以取出exit; …
我正在构建一个Codeigniter应用程序,我正在努力防止SQL注入.我正在使用Active Record方法构建我的所有查询.我知道Active Record会自动清理输入,但我想知道到底在多大程度上?它只是逃避所有引用,还是做得更多?如何防止混淆的SQL注入或其他更高级的类型?
基本上,我正在寻找CI如何清理数据的深入解释.谁知道?
我非常重视PHP/mySQL/CodeIgniter,编写sql语句来处理/操作数据.我觉得所有这些都是原始的,我听说过MongoDB,无架构数据库的好东西.
在MySQL中,模式帮助我找出模型的结构.通常,我会绘制一个类图,其基本内容如:id,title,description,date
让我感到震惊的是,MongoDB看起来非常简单,很难掌握从哪里开始.从我听到/读到的,它没有架构.我怎么知道它会返回什么类型?
如何构建模型,如何在不同的"表"之间添加关系?
添加关系和映射数据的标准方法是什么?我试过玩它,但不确定我在做什么是正确的方法.
我曾尝试阅读手册等,但找不到一篇好文章帮助我从mySQL过渡到MongoDB.
无论如何,我可以看到模型与mySQL和MongoDB的比较?简单的事情,如CRUD.
我该如何开始,从哪里开始?
我正在拔掉所有的头发......一直在搜索每一个帖子,如果有人能指出我一个有效的例子,我将不胜感激.
收录到doc:https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc 我可以调用另一个模块 - >控制器使用
modules::run('module/controller/method', $params);
modules::load('module/controller/method', $params);
or
$this->load->module('module/controller');
$this->controller->method();
Run Code Online (Sandbox Code Playgroud)
问题:永远不会调用"method()".每次只调用控制器的构造函数.
目标是将自包含的MVC构建为模块并由其他控制器使用.但无论我做什么,它只调用构造函数,方法不调用.几个星期前我开始使用HMVC,我是否遗漏了文档中的某些内容,或者它是不是以这种方式使用?
这是设置:
modules
|--ztest1
| |--controller/c1.php
|--ztest2
|--controller/c2.php
class C1 extends MX_Controller {
function __construct() {
parent::__construct();
}
function index () {
Modules::run('ztest2/c2/testc2/');
//Modules::load('ztest2/c2/testc2/');
//$this->load->module('ztest2/c2/testc2/');
//$this->c2->testc2();
}
}
class C2 extends MX_Controller {
function __construct() {
parent::__construct();
echo __FILE__." // ".__CLASS__."/".__FUNCTION__.PHP_EOL;
}
function testc2(){
echo __FILE__." // ".__CLASS__."/".__FUNCTION__.PHP_EOL;
}
}
output:
/app/modules/ztest2/controllers/c2.php // C2/__construct
Run Code Online (Sandbox Code Playgroud)
附加说明:脚本没有错误或警告.它只是静静地调用构造函数.
如何将上传的文件名保存在变量中(我是CI新手)?
我正在使用此代码进行测试:
我真的很感谢你对这些家伙的帮助.
这是我正在使用的代码(由于stackoverflow的限制,我一遍又一遍地输入这个代码):
<?php
class Gallery_model extends CI_Model {
var $gallery_path;
var $videos_path;
var $thumbnail;
var $video_name;
function Gallery_model() {
parent::__construct();
$this->gallery_path = realpath(APPPATH . '../images');
$this->videos_path = realpath(APPPATH . '../videos');
$this->videos_path_tnumb = realpath(APPPATH . '../videos/thumb');
$this->thumbnail = 'C://xampp//htdocs//upload//videos//thumb';
$this->video_name = 'C://xampp//htdocs//upload//videos//79825_00_01_SC03_intro.mov';
}
function do_upload() {
$config = array(
// 'allowed_types' => 'jpg|jpeg|png|gif',
// 'upload_path' => $this->gallery_path,
// 'max_size' => 10000
'allowed_types' => 'avi|mp4|flw|mov',
'upload_path' => $this->videos_path
);
$this->load->library('upload', $config);
$field_name = "some_field_name";
if ($this->upload->do_upload()) {
$this->getThumbImage($_POST['userfile']);
}
} …Run Code Online (Sandbox Code Playgroud) 我正在使用Phil Sturgeon Rest Server编写一个简单的RESTful服务.我想通过使用此库提供的API密钥来保护我的方法.
不幸的是,这并没有很好的记录,我有点迷失.
我想验证用户(电子邮件/密码),然后生成一个auth密钥以发送每个其他请求.但似乎我已经需要auth密钥来生成一个...创建一个虚拟密钥似乎不太安全.对不起,如果这是一个愚蠢的问题,但最佳做法是什么?
我正在遭受一个web配置文件,它不会重写我的codeigniter应用程序的url.这是web配置文件.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Clean URL" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这是我的网站:http: //gandhitomodi.com
我无法得到这种网址 http://gandhitomodi.com/controller/method/
例如
http://gandhitomodi.com/welcome/index/
请帮我解决这个问题.
****编辑*****
这是route.php
$route['default_controller']="welcome/index";
$route['sendmail']="welcome/send";
Run Code Online (Sandbox Code Playgroud)
这是我更改的config.php设置.
$config['base_url']="http://gandhitomodi.com/";
$config['index_page']='';
$config['url_protocal']='PATH_INFO';`
Run Code Online (Sandbox Code Playgroud)