tags:

views:

46

answers:

5

I am writing a Controller for Codeigniter with a method named "print". The name is important, because I would like to be able to access the page at "http://www.mysite.com/mycontroller/print".

However, I cannot do this because there is the syntax error:

Parse error: syntax error, unexpected T_PRINT, expecting T_STRING

Is there any special syntax to make the PHP interpreter "think" that when I say:

class MyClass extends Controller {
    function print() {
        // print method here
    }
}

... that I am talking about a method with a T_STRING name of "print" and not the T_PRINT that it is expecting it to be?

+3  A: 

This won't work because print is a language construct in php. I know it looks like a function, but it is treated the same way as (for example) function, while, include, and so on.

ryeguy
+1  A: 

print like echo or isset are language constructs and can not be used as function or classnames.

edorian
+1  A: 

See the list of Reserved Keywords in PHP. You cannot use any of them as constants, class names, function or method names.

Gordon
+1  A: 

If you called the print function 'hardcopy()' for example, you could use a mod-rewrite rule to accomplish the same thing. ie:

RewriteRule ^/mycontroller/print /mycontroller/hardcopy [L]

RDL
+1  A: 

As everyone has pointed out, you can't use language constructs as function names.

Your solution is probably URI Routing so that you can use print in your url but something safe as your method name.

Ken