Posts Tagged ‘php’

对长春PHP相关企业做一个简单的评价

Tuesday, November 8th, 2011

旅行回来之后花光了所有的积蓄,无奈我又开始找工作,进来一个多月我把长春多数的PHP企业都看的差不多了,作为留念也希望能帮助其他人。

长春博德信息技术有限公司,这家重点介绍,同事们非常好,重点介绍这里的领导,他们会想尽各种理由压低你的工资,然后 用一些小手段来安抚你,自称是长春唯一一家外资企业,还说去考察过没有其他外企,狗眼瞎了吧,还是××装傻充愣,我从纯外资企业走出来的,这苟且的博德干 的是德国的项目,但是老板是中国人,你去挣外国人钱然后给中国人开工资就变成外资企业了?公司员工深信这里是长春唯一的外资企业,并且时不时要在会议上给大家洗脑,这里实际上就 是一个家族企业血汗工厂,项目很多而且没有提成,经常加班并且没有加班费。来之前我同时面试几家,和博德谈的时候一口答应我的薪资要求没问题,我在招聘 网站上的薪资要求是3-4k,等我推掉其他公司之后再谈便改口说试用期过再谈薪水,追问再三给我的答复是可能2k多,我不满,结果这个老头子竟然弄出一套 试题,之前已经答过笔试,英语试题,内容有css,php,mysql等等,3张试题我答了90%,估计至少能对八九成,这次又出题,让我套一套 typo3模板还要做一个typo3扩展,重点来了,扩展要支持typo3的最新扩展机制extbase,我用了第一天的时间学习了解typo3并且套了 模板,了解了一些TypoScript,还有大概3个小时公司的网络访问德国网站基本上瘫痪,第二天花了半天研究什么是extbase,剩下半天开始写扩 展,高潮是这个新出的技术的文档是德语的,所以没有足够的时间完成这个该死的东西,因为这个还是有时间限制的。这个试题过后人家有充分的理由让我“试 用”,说以我的能力试用期会提前结束,两周之后给我安排考核,我在这里学习了20天,赶上开工资又来了一次高潮,我没和大家一起开工资,理由是他们得研究 怎么给我开,等我去开工资的时候人家给我算的很”明白”,试用期工资1k,你在这干了20天,先给你开500吧(1000×2/3===500),然后关于之前的考核呀试用期提前结束呀试 用过后两千多的工资什么的竟然全盘否认,更苟且的是他会把你贬的一无是处,他会说你之前的工作履历是假的,很好,我招了,我起初来你们这里就是为了学typo3和mangento的,顺便免费上网一个月还能开一千块钱, 偶尔发水果咖啡,顺便再从你这里挖几个技术员走,同时还可以有充足的时间去其他企业面试,好吧,但是的确不能否认这里目前某些员工的薪水还是可圈可点的, 最高应过了4k,不过首先你要是个技术“相当”过硬的phper,并且还得熬过前期半年甚至一年的“学习期”,呃,我坦白,这样的人公司里只有两个,而且 牛逼程度超乎你的想象,已经晋升为经理级别,其他人还在悲催的加班,新员工不到2k。

某些人的行为实在可笑,自己做了亏心事然后在网上到处诋毁我,再张嘴之前请考虑以下问题:   updated:2012-3-30

1.你们真的是长春唯一一家外资企业么?那你告诉我好迈,经点,摩斯通都是哪国人开的公司.

2.你们领导怎么和我谈的你知道么?

3.进公司前答应我的薪水是多少你知道么?进公司之后给我的薪水是多少你知道么?

4.说我简历是假的你有依据么?

5.说我人不行是吧…嗯,请问是技术不行呢还是人品不行呢?

6.请问你觉得我上面说的有多少是虚构,有多少是夸张呢?

嗯,我有点冲动了,加了这么多可能是自作多情,人家可能肯本没当回事儿,清者自清,明者自明,如果有人愿意听,我还会继续和别人讲这段经历,一直讲下去.

长春中腾网络科技这里去简单了解了一下,主要业务是做棋牌游戏,同时想做一些商城项目,我面试的时候还没有相关PHP人员,和技术负责人聊的还好,只是这里待遇可能不是很理想,对于PHP技术的薪酬,最多只有2k多。

吉林省赛博空间信息技术有限公司,招聘的实际上是另外一家公司,去了之后被当应届毕业生处理,和孩子们一起添简历,不知是不是技术负责人,有一点小架子藐视所有人似的,狗眼。。省略二百字。。后来和人事谈一谈,他们想做保健品商城,还没有PHP技术人员,没兴趣和她谈薪酬。

长春奥瑞克培训学校去过一次,和各个高校合作培训教学,面试的不知道是校长还是什么,非常的势利,感觉总希望把人掌控在手里,一屋子的大头显示器,聊到工作时间,早8晚5,重点来了,这里讲的是晚课,给学生讲课,也就是说你要每天早8晚5的上班,晚上要讲课,周六周日还要去讲课,寒暑假还要去讲课,没谈到待遇,再强调一遍,一屋子的大头显示器,说会再联系我,之后毫无音信。

长春市中君教育培训学校我应聘了网页设计师,这里也一样,校长简直不可理喻,一开始是一个员工接待,她的意思其实是说招PHP教师是为了给学校做网站,前期不会接触教学,但经过我再三追问,实际上也就是说。。。他们招人的目的是为了做网站的,后来她看糊弄不过去又要我和校长谈,校长虽然苟且,但是还明事理,我介绍一下履历他就直接说了这里养活不起我,之后说我适合兼职会给我安排课程怎样怎样,回去之后毫无音信,我临走礼貌性的伸出右手,但貌似此校长并没有想和我握手的意思,装没看见。

长春UNIX培训学校,没有具体了解,但是和那里的负责人聊过,如果他说的是真的,那待遇应该是不错的,而且感觉上人还好。

长春华美利达贸易有限公司,这家我投过几次简历,介绍看上去还不错,而且还在招聘会上遇见过,但是就是没有面试,可能不是非常缺人。

长春径点科技公司,这个看上去不错,只是简历投过去毫无音信,也没有在大型招聘会上见到此公司露面。

长春市易游科技有限公司,这家没有兴趣,但是听说JAVA方面待遇还是可以的,初级水平可以开到2k5。

长春琦拉希亚有限公司,这里不叫老板,叫社长,是日本人,常年在中国,主要业务是一些日本网站,薪水貌似也不低,传说曾经6k竟然招进来一个DeDeCMS,不过未经核实,公司主页上的待遇描述是1-3k,简历发过去之后没有音讯。

长春摩斯通科技有限公司,这家在智联上就算很牛的公司了,待遇写的比较高,但是我简历投了几次都没有回复,后来在招聘会上遇见才有了面试的机会,总体还好,主要做台湾地区的SEO,PHP技术方面比较弱,但是在价钱上还是比较到位的,职位介绍上说是2-6k,但实际上应该是2-3k, 因为我只谈到了3k,在长春看来也算比较实惠的企业了,五险,双休,加班费,下午茶时间,每年有加薪的机会,年节礼金和每年一次旅游。我只在这里工作了两天,摩斯通的主要工作是SEO,网站开发看上去只是副业,所以技术看上去不是一般的烂,公司管理比较人性化,只是SEO这勾当和江湖骗子无异。

长春好迈科贸有限公司,这是我工作了三年另六个月的地方,老板是纯正的日本人,虽然不尽人意,虽然我已经离开,但是经历过之后才发现,原来各个方面真的不错,可能前期薪水比较低,但是目前几个干了两三年的同事至少也达到3k上下了,可能偶尔比较忙,但起码大家都是善良的,五险,双休,加班费,带薪法定假日,以及各种小小福利,而且谈的工资是税后的(税改之后对多数人意义不大),最重要的是在这里你能接触到足够多的新技术,w3c,jquery之类的不谈,fleaphp>symfony,zendframework,svn>git,ubuntu>debian>centos>archlinux,python,perl,shell,在这里你会有攻城(工程)师的快感,目前还有一个供大家学习的书架,当年中午还有三国杀时间,还举办过三国杀比赛(是有奖品的),我离职的时候薪水>4k,这里的员工不算我和大经理还有3个人超过4,其中有两个人达到6,这里最近的免费PHP培训入职之后薪水保底1k6。

还有一些专科医院的相关信息我就不做具体介绍了,因为我对这方面信息没有兴趣,而且可能待遇也不会太高。

还有一个要说的是,如果你不是必不得已要留在这里,那还是出去走走的好,如果你能在长春达到3k或者4k,那么你在北京可能会很轻松达到8k,在上海可以很容易达到10k,如果你有幸进入一些名企,一年可能会有十五个月以上的工资。

假如你有和我一样的经历,如果你有一点点追求并且是个web develper,如果你还想在长春干一点事业,那么非常欢迎你联系我,我请大家吃饭。

这是一篇杂谈,最近忙一些私事,游记会继续更新

PHP中静态调用非静态方法

Sunday, March 6th, 2011

1.PHP中可以静态调用非静态方法么?

今天我被问到PHP中可不可以使用 className::methodName() 的方法来调用一个没有声明Static的方法。在我的印象中,我好像是见过这种用法,但又有些不确定。大家都知道,在手册或者教程里,方法被分为静态方法和非静态方法,通常我们静态调用的方法,肯定是静态方法。

那如果我们调用了非静态方法会怎么样呢?首先做测试.

<?php
class test{

function test(){

echo ‘it works’;

}

}

test::test();

执行以下,返回错误如下

Fatal error: Non-static method test::test() cannot be called statically in /home/×××/test.php on line 7 Call Stack: 0.0002 332548 1. {main}() /home/×××/test.php:0

这个时候,可能大家就会认为静态调用非静态方法是行不通的了,但其实,结论下的过早了,因为test()这个方法比较特殊,与类同名,是构造方法。

我们继续测试。

<?php
class test{

function test(){

echo ‘it works’;

}

function test2(){

echo ‘it works too’;

}

}

test::test2();

执行结果:

it works too

这说明,静态调用非静态方法是可行的,但是静态调用构造方法是不可以的。为了验证这个结论,我又做了如下测试:

<?php
class test{

static function test(){

echo ‘it works’;

}

}

test::test();

执行的结果如下:

Fatal error: Constructor test::test() cannot be static in /home/xxx/test.php on line 9

构造方法不能声明静态,所以上面的推论正确。

但这个结果的确是很特殊的,因为可能只有PHP可以静态调用非静态方法,我用Java做了实验,如果静态调用非静态方法会报如下错误:

Cannot make a static reference to the non-static method showString() from the type HelloWorldApp

其他语言我没有一一尝试,但这已经足够来说明PHP的特殊之处,关于为什么PHP会有这样的情况我暂时没有找到相关说明。

2.静态调用非静态方法是否应该被应用?

那我们是不是可以使用这种方法来代替static方法呢? 首先在代码的可读性上来看,静态调用非静态方法当然是不被推荐的,这会让维护者产生疑惑。

接下来我们再做一些实验,来看一下静态调用非静态方法在效率上是否会有一定的优势。

<?php
class test{function test2(){}}

for($k=0; $k<10000; $k++)

{

test::test2();

}

上面代码在我这里的执行时间是18到28毫秒,我们再来测试标准的写法。

<?php
class test{static function test2(){}}

for($k=0; $k<10000; $k++)

{

test::test2();

}

上面的代码执行时间在5到10毫秒之间,这样看来,静态调用非静态方法的效率要比标准的静态方法调用低的多,所以在效率上也不推荐静态调用非静态方法

国外PHP开源CMS系统一览

Sunday, February 13th, 2011

Joomla!

Joomla! 是一套采用PHP+MySQL数据库开发,可跨平台运行的内容管理程序。Joomla! 除了具有新闻/文章管理,文档/图片管理,网站布局设置,模板/主题管理等一些基本功能之外。还可通过其提供的上千个插件进行功能扩展包括:电子商务与购 物车引擎、论坛与聊天、日历、博客、目录分类管理、广告管理程序、电子报、数据收集与报表工具、期刊订阅服务等。
官方资源

官方网站:http://www.joomla.org

TYPO3 — 扩展支持,功能强大

Typo3 是一款开源的网站内容管理程序。Typo3 基于 PHP 和 MySQL。与一般的 CMS 不同,Typo3 对网站管理员的技术能力要求较高,其内部包含一系列完整的接口、函数和模块,使得Typo3的扩展功能开发十分灵活。Typo3 使用了模板分离技术,其模板使用了内置的 TypoScript 语言。Typo3 在企业级应用上表现出色。

官方网站:http://typo3.org

Pixie — 有扩展支持,模块,主题,插件,块(Blocks)

Pixie是一款简单精致的轻型开源CMS。作为2009年Open Source CMS Award – 最具潜力开源CMS大奖的亚军,Pixie并不热衷于与其他同类系统竞争,他们的目标是打造一款“简单到连祖母都会使用”的建站系统,同时不失其强大的功能特色。

Pixie严格遵循Web标准,在可用性及SEO方面表现出色;用户在安装Pixie时甚至可以提前选择不同的预设安装包来打造博客、商业网站等不同类型的站点。

官方网站:http://www.getpixie.co.uk

XOOPS

XOOPS 是一套开源的内容管理程序,衍生自 PHP-Nuke,采用PHP语言跟MySQL数据库。功能、界面全部模板化设计,可用于构建各种网络社区。XOOPS 的发布采用GPL协议,可免费使用和修改;在遵循GPL相关条款的前提下,可自由再发布。

XOOPS 的用途很广泛,对于个人用户,可以启用XPress模块(针对XOOPS的WordPress),作为个人的网志。对于较大规模的网站,可以根据需要,启 用更多的模块,如新闻发布、论坛、资源下载、友情链接,以及在线购物、广告管理等,对于Wiki、RSS,XOOPS也有相应的模块。

在国际语言支持方面,XOOPS有十种以上的语言版本,包括简体中文、繁体中文,编码可自由选择采用GB 2312、BIG 5或是UTF-8。
官方资源

官方网站:http://www.xoops.org

Textpattern — 没有扩展支持

Textpattern 是一款简洁而又漂亮的CMS,主题很素雅,留有很大的个性化空间。内置Textile写作语法,所以用户不必懂得 HTML标签语法也能轻松写作。预设主题非常简洁,但可定制程度很高。Textpattern采用 PHP+MySQL构建,代码体积小,效率高,网页访问速度快。目前已支持包含中文在内的多种语言。Textpattern 适合做风格清新简练的博客。
官方资源

官方网站:http://textpattern.com

ImpressCMS — 有很多扩展,Modules和Themes。

2009年Open Source CMS Award – 最具潜力开源CMS大奖冠军得主。基于MySQL驱动的模块化的内容管理系统。网站内容由各自独立的内容模块进行管理,用户可以按照自己的需求来安装相应的模块,当前可用的模块包括:新闻发布,论坛,相册以及其它各类第三方模块扩展。

官方网站:http://www.impresscms.org

SilverStripe — Module,Theme,Widget,扩展较多

SilverStripe是一款功能强大的CMS内容管理系统,具有强大的网站设计功能,直观和友好的用户操作界面。采用MVC框架设计开发并运用了Ajax技术。易于扩展。所有页面都符合XHTML标准并基于模板生成。安装需要PHP5和MySQL环境支持,内置所见所得编辑的文本编辑器TinyMCE。文件管理界面采用了AJAX技术,可仅通过简单的拖曳,来调整文件树和链接关联。

官方网站:http://silverstripe.org

MODx — 从官方网站上看,用户体验非常烂,有扩展功能,但看上去乱七八糟的,源码包也太大了。

MODx 是一个开源的 PHP 应用框架,可以帮助使用者控制自己的网上内容。它是开发人员和高级用户理想的控制系统,任何人都可以使用 MODx 发布、更新、维护动态网站,或 html 静态页面的网站内容。

MODx 也是 CSS 布局的 Ajax CMS ,是一个完全符合 XHTML 标准规范的 php 内容管理系统(CMS),内部集成的 MooTools、Scriptaculous 和 Prototype 库,MODx系统能够帮助用户、开发者和CSS设计者或Ajax爱好者快速建立“Web 2.0”网站。

官方网站:http://modxcms.com

ExpressionEngine — 收费的

ExpressionEngine 是 EllisLab 推出的内容管理程序,它包含一个免费的“核心”版本,和一次性收费的“个人”及“商业”版本。ExpressionEngine 是基于 CodeIgniter 开发(CodeIgniter 也是 EllisLab 的产品)构架的,这也使得它能得到更多的PHP程序员的支持,从而开发出更多的插件和模块。ExpressionEngine 的后台管理面板很精美,依靠 AJAX 技术实现了不少只有在桌面软件中才有的效果,采用jQuery更是给插件的开发带来了许多方便。

官方网站:http://expressionengine.com

国外优秀的CMS项目还有很多, 以上整理了一些比较有名气的, 当然其他不知名的CMS系统中也不乏优秀作品.

解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题

Friday, March 26th, 2010

其实这个问题很久之前遇到过, 应该是没解决, 当时的情况是openoffice打开正常而excel打开不正常, 后来也没解决了, 只能把编码转了.

这次又遇到这个问题了, 在网上一番寻找, 在一篇java的文章里找到了原因, 是由于输出的CSV文件中没有BOM.

什么是BOM?

在UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE”的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符”ZERO WIDTH NO-BREAK SPACE”。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符”ZERO WIDTH NO-BREAK SPACE”又被称作BOM。
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
Windows就是使用BOM来标记文本文件的编码方式的。

那么如何在PHP中输出BOM呢?

在所有内容输出之前

print(chr(0xEF).chr(0xBB).chr(0xBF));

面向对象的访问控制

Monday, May 5th, 2008

这两天有在看php5的面向对象的一些教程, 因为php4用的比较多,所以对面向对象这个概念并不是很熟悉.

这里只是简单记录一下关于public, private和protected.

public(公共的)应该比较容易理解, 完全公开, 任何地方都可以访问, 包括该类内部, 外部, 子类等等.

<?
class a{
	public $a;

	function __construct(){
		$this->a = "1";
	}

	function test(){
		echo $this->a;
	}
}

class b extends a{
	function test2(){
		echo $this->a;
	}
}

$a = new a;
$a->test();
// 这里说明public属性对象内部可访问, 而该语句没报错是
// 因为test方法也可以访问, 说明方法默认为public

echo $a->a; // 这里说明public属性外部也可以访问
$b = new b;
$b->test2(); // 这里说明public属性在子类中可以访问
echo $b->a;  // 这里说明public属性在子类外部也可以访问
?>

private(私有的)可以理解为只有对象的内部可以访问, 但是其中有可比较难理解的概念, 就是继承来的public方法可以访问到父类的private方法和属性, 而且实际上private属性和方法在技术上是无法被覆写的, 这个我目前还没有研究太透彻.

<?
class c{
	private $a;

	function __construct(){
		$this->a = "2";
	}

	function test(){
		echo $this->a;
	}
}

class d extends c{
	function test2(){
		echo $this->a;
	}
}

class e extends c{
	private $a="3";
	function test2(){
		echo $this->a;
	}
}

$c = new c;
$c->test();// 这里说明private属性对象内部可访问
// echo $c->a; // 这里会报错说明private属性外部不可以访问
$d = new d;
echo '[';
$d->test(); // 这里输出2,说明在test()中可以访问到class c 的$a
echo ']';
$d->test2(); // 这里没有产生输出说明private属性在子类中不可见
echo $d->a;  // 这里也没有产生输出说明private属性在子类外部也是不可见的
$e = new e;
echo '{';
$e->test();  // 这里输出2, 说明该方法可见, 但访问的是父类的$a
echo '}';
$e->test2();
// 这里输出了3说明$a被覆写了, 但其实在class e中
// 其父类的$a并不可见,所以并不是覆写而是创建
?>

protected (受保护的)我个人理解就是在对象和子对象中你想怎么用都可以, 就是不可以在外面用.

<?
class f{
	protected $a = "4";
	function test(){
		echo $this->a;
	}
}

class g extends f{
	function test2(){
		echo $this->a;
	}
}
$f = new f;
$f->test(); // 这里产生了输出,说明protected属性对象内部可以访问
//echo $f->a; // 这里报错说明protected属性对象外部不可以访问
$g = new g;
$g->test2(); // 这里输出4,说明protected属性在子类中可以访问
$g->test();  // 这里输出4,说明protected属性在子类中可以访问
// echo $g->a;  //这里报错,说明protected属性在子类的外部不可访问
?>