其他语言的一个方便的特性是能够为属性创建get和set方法。在试图找到在PHP中复制此功能的好方法时,我偶然发现了这一点:
下面是我对这个类的分类:
<?php
class ObjectWithGetSetProperties {
public function __get($varName) {
if (method_exists($this,$MethodName='get_'.$varName)) {
return $this->$MethodName();
} else {
我是php的新手,目前我正在阅读Wrox Professional PHP 5。
有人能给我解释一下下面的代码吗?
<? php
abstract class PropertyObject
{
//Stores name/value pairs that hook properties to database field names
protected $propertyTable=array();
//List of properties that have been modified.
protected $changedProperties=array();
//Actual
有数以千计的php __get和__set示例,不幸的是没有人真正告诉您如何使用它们。
因此,我的问题是:如何在类内和使用对象时实际调用__get和__set方法。
示例代码:
class User{
public $id, $usename, $password;
public function __construct($id, $username) {
//SET AND GET USERNAME
}
public function __get($property) {
if (property_exists($this, $property)) {
我用的是symfony 3.4。我能够在同一个控制器中设置和获取会话数据。但是在抛出异常的其他控制器中获取相同的会话数据:“调用成员函数get() on null”。
下面是我使用的代码:
Controller1.php(Working)
$this->session = new Session();
$this->session->start();
/*** Set Session Data ***/
$this->session->set('userid', $dbres [0]['user_id&
在Ruby和PHP中(我猜其他语言也是如此),只要设置了一个属性,就会调用一些实用方法。( *instance_variable_set*用于Ruby,*__set*用于PHP)。
所以,假设我有这样一个C#类:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
现在,假设调用了Person类中的任何属性设置器,我想先调用另一个方法,然后继续setter的默认行为,属性设置器也是如此。
这个是可能的吗?
编辑:,我想在不定义备份字
我正在使用PHP实现OOP设计。我想知道PHP如何为其神奇的方法(如__get和__set )处理继承。
class Foo
{
protected $property1;
public function __get($name)
{
if ($name == "property1")
{
// do some logic
return $result; // may be null
}
return;
}
public f
给定以下两个类(为清晰起见(不对变量进行健全性检查等))
<?php
class Person {
private $Name;
private $Phones = []; // List/array of phone number.
function __construct($name) { $this->__set('Name', $name);}
public function __get($property) {return $this->$property;}
publi
我有一个应用程序正在创建一个JSON文件和一个PHP页面,该页面使用该JSON文件更新数据库。现在,我希望在两台不同的机器上运行应用程序和PHP页面。因此,我在机器1上运行了应用程序,从应用程序创建的JSON文件存储在PHP文件根目录之外的“Public”目录中。如何确保PHP能够访问该文件,或者更确切地说,我可以在哪里存储该JSON文件,以便PHP能够使用该文件?
来自C#的JSON结构:
public class User_Group
{
public int ID_UserGroup { get; set; }
public string Name_UserGroup {
我想从我的表中删除一些行。但是,当我单击delete时,它只显示一个空白页。我确信id值和db连接。
这是我的密码:
// connect to the database
include('connect-db.php');
// confirm that the 'id' variable has been set
if (isset($_GET['id']) && is_numeric($_GET['id'])) {
// get the 'id' variable from the
我正在学习codeigniter,有一个问题。代码来自
下面是模型和控制器。它没有定义$row,但它仍然有效。(原版有打字错误,所以我把它修好了。)
Q1。$row是从哪里来的?Q2。你能解释一下get('users',5,$rows);吗?用户必须是sql中的表,限制为5,但我为什么需要$rows?
在模型中,
// get 5 rows at a time
function getUsers($row)
{
$query=$this->db->get('users',5,$row);
if($query->num_rows()>0)
我试图在单元测试中模拟mysqli对象,因此我必须模拟属性mysqli_result::__get()或直接模拟属性mysqli_result::num_rows。我已经在寻找解决方案,但我发现的答案根本行不通。
我的代码是这样的:
use PHPUnit\Framework\TestCase;
class Mocks extends TestCase{
public function makeMysqliMock(array $queries): mysqli{
// build mocked mysqli-object
#$link = $this
我正在写一个新的网站,使用PHP和MySQL。我正在尝试使用OO来做这件事,并欢迎您的一些建议。
我知道我应该像下面这样构造这个类,但我不确定的是,我是否应该创建单独的方法来访问数据库,以插入、更新等名称。
有关系吗?我应该使用不同的方法,还是可以将代码直接放入set_name和get_name中?
<?php
class person {
var $name;
function set_name($new_name) {
$this->name = $new_name;
}
function get_name() {
ret
一开始。
我看到了这样的问题:
尝试修改我的代码,但没有任何更改。
问题:
在http://localhost:8000/session/set上-尝试在http://localhost:8000/session/get上保存会话(var_dump返回NULL) -尝试获取我保存的会话,但它没有。
我在SessionController.php中的代码
class SessionController extends Controller{
public function accessSessionData(Request $request){
昨天我刚和两位同事谈了一次,他们告诉我,我应该停止在PHP中使用构造函数来初始化字段。
他们的推理是,如果要在不同的地方创建类的实例,而我决定添加另一个构造函数参数,则需要用新参数更新该类实例化的所有位置。可以说,这将是紧密耦合。
我对PHP非常陌生,在C#中,我会使用构造函数,只需这样做:
public class Example
{
public int X { get; set;}
public int Y { get; set;}
public Example(int x, int y)
{
X = x;
Y = y;
我是wordpress的新手,我正在尝试为多个自定义帖子类型创建一个存档页面。
我有两个自定义帖子类型,‘公平’和‘展览’,我目前有两个存档页面,带有pre get帖子操作:
add_action( 'pre_get_posts', function ( $q )
{
if ( !is_admin() // VERY important, targets only front end queries
&& $q->is_main_query() // VERY important, targets only main qu
因此,我正在将一个项目从PHP转换为C#。获得了作为查询结果的通用数据列表
//C# code
public class TermsCommodityModel
{
public int terms_id { get; set; }
public int commodity_id { get; set; }
public int custom { get; set; }
public int calculated { get; set; }
public string name { get; set; }
public string formul
我正在尝试从jQuery发出一个请求,看看存储中是否有足够的资源来建造一座房子。我真的不明白ajax函数$.get、$.post和$.ajax之间的区别,以及何时使用哪种函数。我认为$.ajax是一个更高级的函数,它还包括get和post,但是我什么时候使用get,什么时候使用post?另外,我在这里以正确的方式使用.get吗?
下面是我的jQuery代码:
var x = 10 // x-position
var y = 10 // y-position
$.get('request.php?house=cottage&x='+x+'&
在C#中,可以为每个属性(属性)定义和填充不同的getter和setter,但是在php中,它看起来是所有属性的公共网关。是否有一种方法可以为每个属性定义getter和setter,如C#中所示的代码:
private string hello;
private string world;
public string Hello
{
get{ return hello;}
set{ hello = value + "this one is hello";
}
public string World
{
get{return world;}
s
我来自一个.Net背景,我试图把我的大脑围绕在我习惯的编程模式上,而不是用PHP。
我有一个具有关联数组属性的类。我想将一些(但不是全部)关联数组键“提升”到类级属性。在C#中,我通常会这样做:
//C# Code
class MyClass{
private Dictionary<string, string> attributes = new Dictionary<string,string>();
//Get/Set the ID from the private store
public string ID{
get {