PHP中魔术方法的声明属性public visibility

在调试一段程序,学习封装的过程中,会出现
Warning: The magic method __get() must have public visibility and cannot be static in E:XAMPPhtdocsstutest1fengzhuang.php on line 8

Warning: The magic method __set() must have public visibility and cannot be static in E:XAMPPhtdocsstutest1fengzhuang.php on line 21
在直接设置私有属性的时候,自动调用了这个__set()方法为私有属性赋值
在直接设置私有属性的时候,自动调用了这个__set()方法为私有属性赋值
在直接设置私有属性的时候,自动调用了这个__set()方法为私有属性赋值
在直接获取私有属性的时候,自动调用了这个__get方法
姓名:张三
在直接获取私有属性的时候,自动调用了这个__get方法
性别:男
在直接获取私有属性的时候,自动调用了这个__get方法
年龄:20

[php]

<?php
class Person
{
private $name;
private $sex;
private $age;
//__get()方法来获取私有属性
private function __get($property_name)
{
echo "在直接获取私有属性的时候,自动调用了这个__get方法<br>";
if (isset($this->$property_name))
{
return ($this->$property_name);
}
else
{
return (NULL);
}
}
//__set方法设置私有属性
private function __set($property_name,$value)
{
echo "在直接设置私有属性的时候,自动调用了这个__set()方法为私有属性赋值<br>";
$this->$property_name = $value;
}
}

$p1=new Person();
$p1->name="张三";
$p1->sex="男";
$p1->age=20;
//直接获取私有属性的值,会自动调用__get()方法,返回成员的属性值
echo "姓名:".$p1->name."<br>";
echo "性别:".$p1->sex."<br>";
echo "年龄:".$p1->age."<br>";
?>

[/php]

对于PHP中的魔术对象中的__get() 和__set(),很多教程中出现类似的问题。主要原因为function __get()方法设置为了private私有属性。PHP中能识别并正确处理,但是它会警告我们function __get()和function  __set()必须具备公有属性。即默认的不加private或者增加public,即不再出现该提示。

Php类中构造函数__construct的双下划线之谜

折腾了很久,写一个类实例化后,总是出现无法实例化的情况。对照源码了N次,总觉得没差错。后来直接拷贝源码进去看,才发现__construct竟然要双下划线。切记切记。

[php]

<?php
class Person
{
var $name;
var $sex;
var $age;

function __construct($name, $sex, $age)
{
//通过构造方法传进来$给成员属性$this->name赋初始值
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
}
function say()
{
echo "我的名字叫:".$this->name."性别:".$this->sex."我的年龄是:".$this->age.'<br>’;
}
}
//创建三个对象,传入不同实参

$p1=new Person("张三","男",20);
$p2=new Person("李四","女",30);
$p3=new Person("王五","男",40);

//访问对象的说话方法
$p1->say();
$p2->say();
$p3->say();
?>

[/php]

国外最流行PHP框架排名

 

一个月前,我们就开始了一年一度SitePoint框架人气调查。现在月份已经到期, 这需要时间来看看结果。 共收到的回应是7800+个(项),至今远远超过其他任何以前开展的调查,甚至在过滤掉无效的项后,我们最终得到有效参与者的一个强大数据。

首先第一件事情,如许,这里是设置给您阅览的整个结果:下载。请随便使用它 – 如果你想出一些有趣的图表,请与我们分享!阅读下面的“数据”段上下载文件的一些详细信息。

2015年最流行的框架

框架赢家

要查看下面图片或全屏幕版本,只需点击它们。 或在新的标签页打开他们。

正如预期的那样,Laravel这次又一次高出了一大截。

php_framework_popularity_at_work_-_sitepoint2c_2015

php_framework_popularity_in_personal_projects_-_sitepoint2c_2015

有一些人可能会担心,部分框架分裂版本可能影响Laravel的调查结果,并给它一个不公平的优势, 但我们可以看到,即使所有其他的框架合并版本,Laravel也能获胜。

下面将以表格形式来呈现数据, 只是因为我没有时间做漂亮的图表。我会尽快更新图表。

按国家统计框架

下面我们来看看所有超过50票的国家,这些都是他们最喜欢使用框架:

国家 总票数 最喜欢 票数 个人最喜欢 票数
United States 819 Laravel 219 Laravel 293
Czech Republic 770 Nette 611 Nette 639
United Kingdom 496 Laravel 138 Laravel 166
Germany 428 Symfony2 76 Laravel 100
France 343 Symfony2 149 Symfony2 136
Brazil 305 Laravel 100 Laravel 111
India 287 Laravel 62 Laravel 77
Ukraine 263 PHPixie 66 PHPixie 67
Indonesia 242 CodeIgniter 77 Laravel 64
Russian Federation 235 Yii 2 53 Yii 2 72
Poland 216 Symfony2 52 Symfony2 46
Netherlands 209 Laravel 64 Laravel 84
Romania 183 Symfony2 49 Symfony2 48
Canada 138 Laravel 40 Laravel 52
Spain 131 Symfony2 47 Symfony2 43
Vietnam 112 Laravel 34 Laravel 43
Iran 101 Laravel 34 Laravel 35
Italy 100 Laravel 20 Laravel 25
Australia 99 Laravel 30 Laravel 39
Slovakia 94 Nette 48 Nette 47
Belgium 79 Laravel 26 Laravel 31
Serbia 78 Laravel 20 Laravel 29
Hungary 73 Laravel 17 Laravel 19
Turkey 71 Laravel 26 Laravel 28
Mexico 68 Laravel 22 Laravel 21
Bulgaria 66 Laravel 13 Laravel 20
Lithuania 65 Symfony2 22 Laravel 26
Thailand 58 CodeIgniter 14 Laravel 16
Pakistan 57 CodeIgniter 14 CodeIgniter 13
Philippines 54 Laravel 15 Laravel 16
Argentina 52 Laravel 16 Laravel 21
Bangladesh 51 Laravel 18 Laravel 16
Belarus 51 Symfony2 20 Symfony2 19
Portugal 50 Laravel 12 Laravel 17

这是一个有趣的趋势观察。大多数英语国家青睐Laravel,而法国对Symfony忠诚 – 这是它们自己的产品。有趣的是,一个令人难以置信的是大部分捷克人(第二最活跃的国家,还在调查中!)青睐Nette – 这个框架在西方世界知之甚少,而乌克兰最喜欢的当地框架 – PHPixie。当你观察前五名的国家会觉得更加有趣 – 不只是赢家– 把它留给你来探索!

按年龄分组框架

最后,如果我们看看各年龄组的前5名框架,我们得到这样的结果:

Group: Under 18 Votes: 131
Work Favorites Votes Personal Favorites Votes
PHPixie 73 PHPixie 73
Laravel 24 Laravel 27
Nette 8 Nette 9
No Framework 6 No Framework 5
CodeIgniter 4 Symfony2 4
Group: 18 – 25 Votes: 2433
Work Favorites Votes Personal Favorites Votes
Laravel 604 Laravel 720
Nette 329 Nette 338
PHPixie 259 PHPixie 259
Symfony2 258 Symfony2 255
CodeIgniter 178 Yii 2 194
Group: 26 – 35 Votes: 3870
Work Favorites Votes Personal Favorites Votes
Laravel 788 Laravel 1049
Symfony2 636 Symfony2 597
CodeIgniter 292 Yii 2 323
Nette 285 Nette 303
Yii 2 258 CodeIgniter 235
Group: 36 – 45 Votes: 1044
Work Favorites Votes Personal Favorites Votes
Laravel 191 Laravel 249
Symfony2 146 Symfony2 134
CodeIgniter 91 Yii 2 79
Zend Framework 2 77 Zend Framework 2 71
Company Internal Framework 73 CodeIgniter 68
Group: 45+ Votes: 252
Work Favorites Votes Personal Favorites Votes
Laravel 52 Laravel 66
CodeIgniter 31 No Framework 29
Symfony2 23 CodeIgniter 27
No Framework 21 Yii 2 22
Yii 2 19 Zend Framework 2 14

Laravel再次领先所有框架,Symfony紧随,除了在年龄组的情况中 – PHPixie 是值得研究的。最明显的是CodeIgniter,仍保持着很强的传统和忠实的用户群。

有趣的是,与去年同期相比Phalcon的人气急剧下降。

不幸的是,由于去年一些抱怨,我们在本次调查没有包括性别数据。这本来是一个有趣的载体。

via yiibai